在矢量Matlab中存储循环计算

时间:2014-03-04 20:37:23

标签: matlab

我想将我在for循环中计算的每个S存储到一个向量中,以便我可以绘制S与x的关系。即S(x1),S(x1 + 0.1).....将被存储为[S(x1)S(x1 + 0.1)....] 这是我的代码:

function[S]=spline(m0,m1,p,q,x1,x2,x)
S=0;
x=x1;
for x=x1:.1:x2
S=(-m0/(6*(x2-x1)))*((x-x2)*(x-x2)*(x-x2))+(m1/(6*(x2-x1)))*((x-x1)*(x-x1)*(x-x1))+p*(x2-x)+q*(x-x1);
end

我似乎无法迭代地将每个S存储在向量中。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您需要使用S的索引。在你的问题中你不能使用你的for循环中定义的那个,所以你需要使用另一个。此外,如果要正确绘制它,则需要根据0.1步定义一个轴。

function[S]=spline(m0,m1,p,q,x1,x2,x)
   S=zeros(1,(x2-x1)/0.1 + 1));
   x=x1;
   i=1;
   for x=x1:.1:x2
       S(i)=(-m0/(6*(x2-x1)))*((x-x2)*(x-x2)*(x-x2))+(m1/(6*(x2-x1)))*((x-x1)*(x-x1)*(x-x1))+p*(x2-x)+q*(x-x1);
       i=i+1;
   end
end

然后您可以绘制此向量:plot(linspace(x1,x2,(x2-x1)/0.1 + 1),S)

答案 1 :(得分:0)

您没有在循环中为S编制索引。实现你想要的便宜的方式是

idx = 0;
for x=x1:.1:x2
    idx=idx+1;
    S(idx)=...