2

初期値から偶数を生成する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

そしてその結果がこれです

iseven =

     0     2     0     4     0     6

結果では、偶数とゼロの両方を取得しています。ゼロを削除して、このような結果を得る方法はありますか

iseven =

         2    4     6
4

5 に答える 5

5

あなたが持っているループなしでそのようなベクトルを得ることができます:

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

 2     4     6

ただし、ゼロとゼロ以外のベクトルを既に持っている場合は、uou を使用してゼロのエントリを簡単に削除できますfind

iseven = iseven(find(iseven));

findおそらく最も頻繁に使用される matlab 関数の 1 つです。ベクトルと行列のゼロ以外のエントリのインデックスを返します。

% indices of non-zeros in the vector
idx = find(iseven);

2 つの出力引数を使用する場合、行列の行/列インデックスを取得するために使用できます。

% row/column indices of non-zero matrix entries
[i,j] = find(eye(10));
于 2012-10-02T10:41:46.623 に答える
5

ゼロ以外の結果のみを表示するには、次を使用できますnonzeros

iseven = [0     2     0     4     0     6]

nonzeros(iseven)

ans =

     2     4     6
于 2012-10-02T12:21:29.557 に答える
0

プログラムからすべてのゼロを削除するには、次のコマンドを使用できます。コマンドは-

iseven(iseven==0)=[]
于 2014-04-03T13:56:10.567 に答える
0

探しているものが見つかるたびに、ベクターの末尾に追加します。

n = [1 2 3 4 5 6]; 
iseven = []; % has length 0
for i = 1: length(n);
  if rem(n(i),2) == 0
    iseven = [iseven i]; % append to the vector 
  end
end
iseven
于 2012-10-02T19:07:13.470 に答える