我想将我在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存储在向量中。谢谢你的帮助。
答案 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)=...