對於下列功能matlab
:返回所有的值數組中
function s = support(x, y)
for i=1:length(x)
if(y(i)~=1)
s = x(i);
end
end
end
我正打算返回所有滿足if-statement
值,但目前看來,該函數只返回最後元素滿足`if語句。我怎樣才能返回所有的值?我應該進行哪些修改?
對於下列功能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 = x(y~=1)
這將返回x
滿足您的條件(y~=1
)的所有元素。但是,如果s
應該是相同的大小x
和y
,那麼它可能更有意義掩蓋元素s
當條件不成立,即
s = x;
s(y==1) = NaN
你的價值不是一個數組,所以你返回只有最後一個值
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很多語法shorcuts的,這是非常更爲有效,這是Matlab的功率。你可以這樣寫:
function s = support(x, y)
s=x(y~=1);
(看邏輯索引理解)
使用邏輯索引返回的所有元素在x
滿足條件y not 1
:
s = x(y ~= 1)
的主要問題是,在循環的每次迭代中's'會被覆蓋(另外:'end'丟失)。 – Jonas
@WhoeverDownvotedThis:問一個基本問題有什麼不對? – Jonas
@Jonas。我包括'末端'。謝謝你的提示... – Simplicity