返回数组中的所有值

时间:2013-02-06 15:30:34

标签: arrays matlab

对于matlab中的以下功能:

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

我打算返回所有符合if-statement的值,但似乎该函数只返回满足`if-的 last 元素声明。我怎样才能返回所有值?我应该做什么修改?

3 个答案:

答案 0 :(得分:2)

你可以简单地写

s = x(y~=1)

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

s = x;
s(y==1) = NaN

答案 1 :(得分: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);

(查看逻辑索引以了解)

答案 2 :(得分:0)

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

s = x( y ~= 1)