保存第二个' for循环'向量计算正在重置先前的值

时间:2018-04-22 10:12:52

标签: matlab for-loop vector

我在每个for循环迭代上分配值时遇到问题。我做了一个小测试来理解它,但这个测试让我更加困惑。

这给了我预期的结果:

alfa =[ 0 30 45 60 90 ];
si=[];

for a= alfa
    degree=a*pi/180;
    s=sin(degree);
    si=[si,s];
    p=2*s;
end

enter image description here

在代码中的下一步之后,先前的值变为空

alfa =[ 0 30 45 60 90 ];
si=[];
pi=[];

for a= alfa
    degree=a*pi/180;
    s=sin(degree);
    si=[si,s];
    p=2*s;
    pi=[pi,p];
end

enter image description here

有谁知道我能纠正什么才能让它变成铁锅?两个for循环给出相同的结果。我想要的是将第二个计算存储在向量中,就像第一个计算一样。

谢谢!

2 个答案:

答案 0 :(得分:2)

问题是你用一个名称' pi命名一个变量,从而覆盖MATLAB的函数pi,它代表一个数值常数(= 3.14159 ......) 。解决方案是修改它的名称:

alfa =[ 0 30 45 60 90 ];
si=[];
pVec=[];
for a= alfa
    degree=a*pi/180;
    s=sin(degree);
    si=[si,s];
    p=2*s;
    pVec=[pVec,p];
end

更改后的结果:

enter image description here

答案 1 :(得分:1)

在Matlab中,pi用于常数pi = 3.1416。在你的代码中,你使用pi = []作为一个空数组,并通过这样做你有覆盖常数pi。通过使用数组pi的另一个名称(例如x。

)可以轻松解决这个问题

此外,Matlab非常适合矢量计算,因此您的代码可以在没有for循环的情况下编写。

alfa =[ 0 30 45 60 90 ];
degree=alfa*pi/180;
si=sin(degree);
x=2*si;