0

の次の関数の場合matlab:

function s = support(x, y)
for i=1:length(x)
if(y(i)~=1)
s = x(i);
end
end
end

を満たすすべての値を返すつもりでしたが、関数は `if ステートメントを満たす最後のif-statement要素のみを返すようです。すべての値を返すにはどうすればよいですか? どのような修正を適用すればよいですか?

4

3 に答える 3

2

あなたは単に書くことができます

s = x(y~=1)

xこれにより、条件 ( ) を満たすすべての要素が返されますy~=1。ただし、 ifをand とs同じサイズにする必要がある場合は、条件が false である要素をマスクする方が理にかなっている場合があります。つまり、xys

s = x;
s(y==1) = NaN
于 2013-02-06T15:32:49.690 に答える
2

s 値は配列ではないため、最後の値のみを返します

function s = support(x, y)
j=1;
for i=1:length(x)
  if(y(i)~=1)
    s(j) = x(i);
    j=j+1;
  end
end

この種の問題に対して、Matlab には非常に効率的な構文ショートカットが多数あり、これが Matlab の能力であることにも注意してください。あなたはただ書くことができます:

function s = support(x, y)
s=x(y~=1);

(論理インデックスを見て理解してください)

于 2013-02-06T15:40:07.640 に答える
0

論理インデックスを使用しxて、条件を満たすすべての要素を返しy not 1ます。

s = x( y ~= 1)
于 2013-02-06T15:43:23.240 に答える