我在每个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
在代码中的下一步之后,先前的值变为空
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
有谁知道我能纠正什么才能让它变成铁锅?两个for循环给出相同的结果。我想要的是将第二个计算存储在向量中,就像第一个计算一样。
谢谢!
答案 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
更改后的结果:
答案 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;