通过减少代码行来复制数据

时间:2014-12-01 11:46:49

标签: matlab

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;做同样的想法?

注意:UL是数字。

1 个答案:

答案 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

然后,如果需要,您可以使用findismember查找索引。

find(ismember(A,B)==1)

ans =

    2    3    4    6    7    9   10