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。谢谢你的留言。。。