rev*_*nge 3 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
Run Code Online (Sandbox Code Playgroud)
我试过values = A(I,J)
但这是n-by-n而不是n-by-1.
您可以隐式地将矩阵视为向量(线性索引):
I = find(A > 5);
values = A(I);
Run Code Online (Sandbox Code Playgroud)
请注意,您可以使用逻辑索引更有效地执行此操作:
values = A(A > 5);
Run Code Online (Sandbox Code Playgroud)