对于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 元素声明。我怎样才能返回所有值?我应该做什么修改?
答案 0 :(得分:2)
你可以简单地写
s = x(y~=1)
这将返回x
中满足条件(y~=1
)的所有元素。但是,如果s
的大小与x
和y
的大小相同,那么屏蔽条件为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)