我有列向量 A 和 B:

A'= [1 2 0 0 1 4]
B'= [1 2 3 4 5 6]

我想过滤掉 A 中的零并删除 B 中的相应元素并将它们设置为:
A' = [1 2 1 4]
B' = [1 2 5 6]

我知道有一个快速的 MATLAB 命令可以做到这一点,但无法弄清楚。

最佳答案

最快、最简单的方法是使用逻辑索引:

A = [1 2 0 0 1 4].';
B = [1 2 3 4 5 6].';

nz = (A ~= 0); %# logical matrix for non-zeros in A

A = A(nz)      %# non-zeros of A
B = B(nz)      %# corresponding elements in B

另一种方式是稍微慢一点
nz = find(A); %# vector of linear indices to non-zero elements

A = A(nz)     %# non-zeros of A
B = B(nz)     %# corresponding elements in B

关于matlab - matlab中的过滤矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12410450/

10-12 19:40