在向量中保存循环数据

时间:2014-05-28 13:48:25

标签: matlab loops if-statement vector save

当我运行我的脚本时,会显示所有值,但我想要vector中的所有值,那么我该怎么办?

x=[1 2 3 4 5];
y=[1 2 3 4 5];

xx=[1.2 1.6 1.8 2.4 2.8 3.4 4.9 2.6];
yy=[1.2 1.6 1.8 2.5 2.8 3.3 4.9 2.5];

plot(x,y,'.g',xx,yy,'*b')

for j=1:length(xx) 

    if xx(j)<x(1)
        value=0    
    elseif xx(j) >x(1) & xx(j)<x(2)
        value=1
    elseif xx(j) >x(2) & xx(j)<x(3)
        value=2 
    elseif xx(j) >x(3) & xx(j)<x(4)
        value=3
    elseif xx(j) >x(4) & xx(j)<x(5)
        value=4
    elseif xx(j) >x(5) & xx(j)<x(6)
        value=5
    else
        value= NaN
    end
end

2 个答案:

答案 0 :(得分:1)

这是一个相对简单的答案,您需要创建一个数组来存储您的数据。我只需添加行value = zeros(1,length(xx))。这将创建一个预先分配的0到0的数组,然后在循环(value(jj) = ##)中覆盖该数组以保存值。

x=[1 2 3 4 5];
y=[1 2 3 4 5];
xx=[1.2 1.6 1.8 2.4 2.8 3.4 4.9 2.6];
yy=[1.2 1.6 1.8 2.5 2.8 3.3 4.9 2.5];
plot(x,y,'.g',xx,yy,'*b')
value = zeros(1,length(xx));
for jj=1:length(xx) 
    if xx(jj)<x(1)
        value(jj)=0;
    elseif xx(jj) > x(1) && xx(jj) < x(2)
        value(jj)=1;
    elseif xx(jj) > x(2) && xx(jj) < x(3)
        value(jj)=2;
    elseif xx(jj) > x(3) && xx(jj) < x(4)
        value(jj)=3;
    elseif xx(jj) > x(4) && xx(jj) < x(5)
        value(jj)=4;
    elseif xx(jj) > x(5) && xx(jj) < x(6)
        value(jj)=5;
    else
        value(jj)= NaN;
    end
end

答案 1 :(得分:0)

你需要在for循环之前创建一个数组,用这样的零初始化:

value = zeros(1,length(xx));

此向量将在循环内更新。用零初始化它将保证它不会为每次迭代分配内存。它的大小与循环的迭代次数相同,因为这是您使用的最终值。

然后,在循环内的每个值之后,写一个(j)。这将在每次迭代中将当前值保存到值向量中的当前位置;

循环后,写入值,它将值打印为矢量。