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

时间:2010-10-17 22:34:44

标签: matlab vectorization

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

这是一个正确的(但是是迭代的)答案:

[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-by-n而不是n-by-1。

1 个答案:

答案 0 :(得分:7)

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

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

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

values = A(A > 5);