counter=1;
for i=1:50,
if y(i)<U && y(i)>L
Y(counter)=[y(i)]; % To copy the data from materix y to Y
counter=counter+1;
end
end
我的问题是:
有没有办法减少代码行并使用某些东西代替&#34; counter&#34;做同样的想法?
注意:U
和L
是数字。
答案 0 :(得分:3)
改为使用逻辑索引。
U=50;
L = 1;
创建一些随机值。我将它乘以100以获得更大的范围。
A=rand(1,10).*100
A =
Columns 1 through 9:
92.3313 32.6929 33.4143 21.4837 71.6719 30.4625 7.5700 57.0943 6.4849
Column 10:
28.0583
应用逻辑索引
B=A(A<U & A>L)
B =
32.6929 33.4143 21.4837 30.4625 7.5700 6.4849 28.0583
然后,如果需要,您可以使用find和ismember查找索引。
find(ismember(A,B)==1)
ans =
2 3 4 6 7 9 10