对于以下函数matlab
:
function s = support(x, y)
for i=1:length(x)
if(y(i)~=1)
s = x(i);
end
end
end
我打算返回所有满足的值if-statement
,但似乎该函数只返回满足 `if 语句的最后一个元素。如何返回所有值?我应该应用什么修改?
你的 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);
(看逻辑索引就明白了)
你可以简单地写
s = x(y~=1)
x
这将返回满足您的条件 ( y~=1
)的所有元素。但是,如果s
应该与 and 的大小相同x
,y
那么屏蔽条件为假的元素可能更有意义s
,即
s = x;
s(y==1) = NaN
使用逻辑索引返回x
满足条件的所有元素y not 1
:
s = x( y ~= 1)