matlab - 在矩阵中查找值并将它们放入向量中

标签 matlab vectorization

它一定很简单,但令人惊讶的是我无法在这里或通过反复试验找到这个问题的答案。
我想从矩阵中获取值(根据某些条件)并将这些值放入向量中。我还需要匹配值的下标索引。有很多数据,所以 for 循环已经用完了。

这是一个正确的(但重复的)答案:

[I,J] = find(A > 5);
values = zeros(numel(I),1);
for i=1:numel(I)
    values(i) = A(I(i),J(i));
end

我试过 values = A(I,J) 但这是 n×n 而不是 n×1。

最佳答案

您可以隐式地将矩阵视为向量 (linear indexing):

I = find(A > 5);
values = A(I);

请注意,您可以使用 logical indexing 更有效地执行此操作:

values = A(A > 5);

关于matlab - 在矩阵中查找值并将它们放入向量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3955595/

相关文章:

c - Fortran 调用 C : How do I get an efficient vectorised function

python - 提高将 numpy 数组转换为 MATLAB double 的性能

r - 向量化嵌套 for 循环,R

optimization - 矢量化代码以实现高效实现

我们可以用C语言读取smoking.mat(数据集)吗?

performance - 多列的matlab矩阵索引

matlab - 在 MATLAB 中对复杂向量进行高效分类

matlab - 在 MATLAB 中查找多个数组的集合交集

python - 创建对象而不调用类

python - 数据类型列表中的字段名称?