菜鸟求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不行,会出现错误。
展开
 我来答
xiongxionghy
2011-11-25 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1753
采纳率:75%
帮助的人:2956万
展开全部
你这问题大得很,除了你写的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)
按下回车,就会出现希望的结果了。

******************************************************
有问题可以再讨论
追问
如果我现在只想要N=1,那该怎么办?源程序把N=1不行,会出现错误。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式