作业帮 > 综合 > 作业

Matlab新手程序求大神帮忙?

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/26 08:17:43
Matlab新手程序求大神帮忙?
clc
x0=[3.6,3.7,3.8,3.9,4.0,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5.0,5.1,5.2,5.3,5.4,5.5]
y0=[4006,4060,4120,4165,4231,4276,4307,4349,4360,4386,4391,4407,4425,4454,4467,4486,4492,4523,4590,4629]
x1=cumsum(x0) %累加
B1=[]
[m,n]=size(x0)
for k=1:n-1
B1(k)=-0.5*(x1(k)+x1(k+1))
B32(k)=y0(k+1)
Yn(k)=x1(k+1)
end
B2=ones(n-1,1)
B=[B1',B2]
for i=1:n-1
y01(i)=y0(i+1)
end
B3=diag(y01)
BB=B3*B %求矩阵B
YN=Yn'%求矩阵YN
A=inv(BB'*BB)*BB'*YN
a=A(1)
b=A(2)
c=b/a
d=y0(1)-c
e=x0(1)
Y=[num2str(d),'exp','(',num2str(-a),'(','x0(k+1)-',num2str(e),')',')',num2str(c)];
strcat('Y(k+1)=',Y)
for t=1:length(y0)-1
k(1,t)=x0(t+1)-x0(1);
end
for i=1:length(y0)-1
YP(i)=(y01(i)-c)*exp(-a*k(i))+c
end
运行完后能出结果,但是YP里面怎么是22个数啊,根据最后一个循环不应该是19个数吗?后面三个数都是重复多余的.
Matlab新手程序求大神帮忙?
运行你的代码后,YP是19个数,不是22个数
再问: 我运行完后是: YP = 1.0e+003 * Columns 1 through 9 4.0601 4.1202 4.1653 4.2314 4.2765 4.3076 4.3497 4.3608 4.3869 Columns 10 through 18 4.3920 4.4081 4.4262 4.4553 4.4684 4.4875 4.4936 4.5247 4.5918 Columns 19 through 22 4.6309 4.6309 4.6309 4.6309 后面多出了三个数,不知道怎么回事
再答: 你先clear一下
再问: 谢谢你,解决了,还想问一下,CLEAR怎么就行了呢?
再答: 你的YP是更新某个位置的值,每次重新运行都没有对其初始化,因此长度不便 因此你之前有一次YP的长度是23个,所以以后每次运行程序YP都是23了,20到23的数值一直都没动过