0

对于以下函数matlab

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

我打算返回所有满足的值if-statement,但似乎该函数只返回满足 `if 语句的最后一个元素。如何返回所有值?我应该应用什么修改?

4

3 回答 3

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 回答
2

你可以简单地写

s = x(y~=1)

x这将返回满足您的条件 ( y~=1)的所有元素。但是,如果s应该与 and 的大小相同xy那么屏蔽条件为假的元素可能更有意义s,即

s = x;
s(y==1) = NaN
于 2013-02-06T15:32:49.690 回答
0

使用逻辑索引返回x满足条件的所有元素y not 1

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