Arrays 返回数组中的所有值

Arrays 返回数组中的所有值,arrays,matlab,Arrays,Matlab,对于matlab中的以下函数: function s = support(x, y) for i=1:length(x) if(y(i)~=1) s = x(i); end end end 我本来打算返回所有满足if语句的值,但函数似乎只返回满足`if语句的最后一个元素。如何返回所有值?我应该应用什么修改?您只需写 s = x(y~=1) 这将返回x中满足条件的所有元素(y~=1)。但是,如果s的大小应与x和y的大小相同,则在条件为假的情况下屏蔽s中的元素可能更有意义,即 s = x; s(

对于
matlab
中的以下函数:

function s = support(x, y)
for i=1:length(x)
if(y(i)~=1)
s = x(i);
end
end
end
我本来打算返回所有满足
if语句的值,但函数似乎只返回满足`if语句的最后一个元素。如何返回所有值?我应该应用什么修改?

您只需写

s = x(y~=1)
这将返回
x
中满足条件的所有元素(
y~=1
)。但是,如果
s
的大小应与
x
y
的大小相同,则在条件为假的情况下屏蔽
s
中的元素可能更有意义,即

s = x;
s(y==1) = NaN
你可以简单地写

s = x(y~=1)
这将返回
x
中满足条件的所有元素(
y~=1
)。但是,如果
s
的大小应与
x
y
的大小相同,则在条件为假的情况下屏蔽
s
中的元素可能更有意义,即

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

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中有很多语法shorcut,它们非常有效,这就是Matlab的强大功能。你可以写:

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

(查看逻辑索引以了解)

您的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中有很多语法shorcut,它们非常有效,这就是Matlab的强大功能。你可以写:

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

(查看逻辑索引以了解)

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

s = x( y ~= 1)

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

s = x( y ~= 1)

主要问题是,
s
在循环的每次迭代中都会被覆盖(而且,
结尾
丢失)。@WhoeverDownvotedThis:问一个基本问题有什么不对?@Jonas。我包括了
end
s。谢谢你的提醒……主要问题是循环的每次迭代都会覆盖
s
(还有一个
end
丢失)。@WhoeverDownvotedThis:问一个基本问题有什么不对?@Jonas。我包括了
end
s。谢谢你的留言。。。