【问题标题】:Save loop data in vector将循环数据保存在向量中
【发布时间】:2014-05-28 13:48:24
【问题描述】:

当我运行我的脚本时,所有的值都会显示出来,但我想要向量中的所有值,我该怎么办?

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

【问题讨论】:

  • 使用value(j)=some_value 并尽量避免使用i 或j 作为迭代器。此外,请考虑使用value = zeros(length(xx),1) 进行预分配。另外,请考虑使用numel 而不是length。
  • 谢谢,但我又有8个答案,我可以把它们都放在同一个向量中,答案不正确=/
  • 你想要一个向量作为结果,对吧?循环结束后打印value。

标签: matlab loops if-statement vector save


【解决方案1】:

这是一个比较简单的答案,你需要创建一个数组来存储你的数据。我只是添加了value = zeros(1,length(xx))这一行。这会创建一个预分配的 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

【讨论】:

  • 是的!正是这个!非常感谢你! =)
  • @user3683409 然后您应该考虑投票/接受答案
  • @LuisMendo 抱歉,但这是我第一次来这里!不过谢谢你的建议! =)
  • @user3683409 不用担心!
【解决方案2】:

您需要在 for 循环之前创建一个数组,用零初始化,如下所示:

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

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

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

循环结束后,写入值,它会将值打印为向量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多