Matlab从数组中删除不需要的数字

Eka*_*Eka 2 arrays matlab

我有一个来自net的matlab脚本,它从初始值生成偶数.这是代码.

n = [1 2 3 4 5 6];
iseven = [];
for i = 1: length(n);
if rem(n(i),2) == 0
iseven(i) = i;
else iseven(i) = 0;
end
end
iseven
Run Code Online (Sandbox Code Playgroud)

它的结果是这样的

iseven =

     0     2     0     4     0     6
Run Code Online (Sandbox Code Playgroud)

在结果我得到偶数和零,是否有任何方法我可以删除零并获得这样的结果

iseven =

         2    4     6
Run Code Online (Sandbox Code Playgroud)

ang*_*nor 5

您可以在没有循环的情况下获得此类向量:

n(rem(n, 2)==0)
ans =

 2     4     6
Run Code Online (Sandbox Code Playgroud)

但是,如果您已经有一个带零和非零的向量,则可以使用find以下命令轻松删除零条目:

iseven = iseven(find(iseven));
Run Code Online (Sandbox Code Playgroud)

find可能是最常用的matlab函数之一.它返回向量和矩阵中非零项的索引:

% indices of non-zeros in the vector
idx = find(iseven);
Run Code Online (Sandbox Code Playgroud)

如果使用两个输出参数,则可以使用它来获取矩阵的行/列索引:

% row/column indices of non-zero matrix entries
[i,j] = find(eye(10));
Run Code Online (Sandbox Code Playgroud)


H.M*_*ter 5

要仅显示非零结果,您可以使用 nonzeros

iseven = [0     2     0     4     0     6]

nonzeros(iseven)

ans =

     2     4     6
Run Code Online (Sandbox Code Playgroud)