菜鸟求matlab大神帮助
data=[21002300250026003060336337334482.55232];N=11;huise(data,N)ans=1.0e+004*0.64640....
data=[2100 2300 2500 2600 3060 3363 3733 4482.5 5232];
N=11;
huise(data,N)
ans =
1.0e+004 *
0.6464 0.7324 0.8298 0.9402 1.0653 1.2070
1.3675 1.5494 1.7555 1.9890
function GM=huise(data,N)
T=length(data);
XO=data;
for i=2:T
X1(1)=X0(1);
X1(i)=X1(i-1)+X0(i);
end
for i=l:T-1
M(i)=-(0.5*(X1(i)+X1(i+1)));
end
B=zeros(T-1,2);
for i=1:T-1
for j=1:2
if j<2
B(i,j)=M(i);
else if j>1
B(i,j)=1;
end
end
end
for i=2:T
Y(i-1)=X0(i);
end
HCS=inv(B'*B)*B'*Y';
H=HCS';
for i=2:T+N
XR1(i)=(XO(1)-H(2)/H(1))*exp(-l*H(1)*(i-1))+H(2)/H(1);
end
for i=11:T+N
K(i-1O)=XR1(i)-XR1(i-1);
end
GM=K;
End
这个程序有什么问题?为什么运行不了?
源程序有点问题,倒数第四行中k(i-1O)改为k(i-10),倒数第七行中xO(1)改为x0(1),正数第十行中xO改为x0
另外,如果我现在只想要N=1,那该怎么办?源程序把N=1不行,会出现错误。 展开
N=11;
huise(data,N)
ans =
1.0e+004 *
0.6464 0.7324 0.8298 0.9402 1.0653 1.2070
1.3675 1.5494 1.7555 1.9890
function GM=huise(data,N)
T=length(data);
XO=data;
for i=2:T
X1(1)=X0(1);
X1(i)=X1(i-1)+X0(i);
end
for i=l:T-1
M(i)=-(0.5*(X1(i)+X1(i+1)));
end
B=zeros(T-1,2);
for i=1:T-1
for j=1:2
if j<2
B(i,j)=M(i);
else if j>1
B(i,j)=1;
end
end
end
for i=2:T
Y(i-1)=X0(i);
end
HCS=inv(B'*B)*B'*Y';
H=HCS';
for i=2:T+N
XR1(i)=(XO(1)-H(2)/H(1))*exp(-l*H(1)*(i-1))+H(2)/H(1);
end
for i=11:T+N
K(i-1O)=XR1(i)-XR1(i-1);
end
GM=K;
End
这个程序有什么问题?为什么运行不了?
源程序有点问题,倒数第四行中k(i-1O)改为k(i-10),倒数第七行中xO(1)改为x0(1),正数第十行中xO改为x0
另外,如果我现在只想要N=1,那该怎么办?源程序把N=1不行,会出现错误。 展开
1个回答
展开全部
你这问题大得很,除了你写的0写成O之外,第15行的l应该改成1,倒数第7行的l也应该改成1。最后一行的End,要小写成end.
然后就是函数要单独见一个文件,保存到工作目录,再在MATLAB的命令窗里下命令,调用这个函数才能得到结果。
***********************************************
估计你是初学者,还不太懂MATLAB,废话不说了,按我说的步骤做:
(1)新建一个.m文件,就是MATLAB左上角,白纸一样的按钮“new M-file“。
把下面的程序复制进去,然后将文件保存为huise.m,保存路径不要改,它最初是什么路径就是什么路径。
function GM=huise(data,N)
T=length(data);
X0=data;
for i=2:T
X1(1)=X0(1);
X1(i)=X1(i-1)+X0(i);
end
for i=1:T-1
M(i)=-(0.5*(X1(i)+X1(i+1)));
end
B=zeros(T-1,2);
for i=1:T-1
for j=1:2
if j<2
B(i,j)=M(i);
else if j>1
B(i,j)=1;
end
end
end
for i=2:T
Y(i-1)=X0(i);
end
HCS=inv(B'*B)*B'*Y';
H=HCS';
for i=2:T+N
XR1(i)=(X0(1)-H(2)/H(1))*exp(-1*H(1)*(i-1))+H(2)/H(1);
end
for i=11:T+N
K(i-10)=XR1(i)-XR1(i-1);
end
GM=K;
end
(2)在MATAB命令窗口里复制
data=[2100 2300 2500 2600 3060 3363 3733 4482.5 5232];
N=11;
huise(data,N)
按下回车,就会出现希望的结果了。
******************************************************
有问题可以再讨论
然后就是函数要单独见一个文件,保存到工作目录,再在MATLAB的命令窗里下命令,调用这个函数才能得到结果。
***********************************************
估计你是初学者,还不太懂MATLAB,废话不说了,按我说的步骤做:
(1)新建一个.m文件,就是MATLAB左上角,白纸一样的按钮“new M-file“。
把下面的程序复制进去,然后将文件保存为huise.m,保存路径不要改,它最初是什么路径就是什么路径。
function GM=huise(data,N)
T=length(data);
X0=data;
for i=2:T
X1(1)=X0(1);
X1(i)=X1(i-1)+X0(i);
end
for i=1:T-1
M(i)=-(0.5*(X1(i)+X1(i+1)));
end
B=zeros(T-1,2);
for i=1:T-1
for j=1:2
if j<2
B(i,j)=M(i);
else if j>1
B(i,j)=1;
end
end
end
for i=2:T
Y(i-1)=X0(i);
end
HCS=inv(B'*B)*B'*Y';
H=HCS';
for i=2:T+N
XR1(i)=(X0(1)-H(2)/H(1))*exp(-1*H(1)*(i-1))+H(2)/H(1);
end
for i=11:T+N
K(i-10)=XR1(i)-XR1(i-1);
end
GM=K;
end
(2)在MATAB命令窗口里复制
data=[2100 2300 2500 2600 3060 3363 3733 4482.5 5232];
N=11;
huise(data,N)
按下回车,就会出现希望的结果了。
******************************************************
有问题可以再讨论
追问
如果我现在只想要N=1,那该怎么办?源程序把N=1不行,会出现错误。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询