查看: 194|回复: 0|关注: 0

[未答复] 我这段代码是从书上打下来的,但是老是报错,怎么回事呀!

[复制链接]

新手

5 麦片

财富积分


050


1

主题

1

帖子

0

最佳答案
发表于 2019-9-15 15:35:15 | 显示全部楼层 |阅读模式
我这段代码是从书上打下来的,但是老是报错,怎么回事呀!我用的是2019版的Matlabclc,clear
x=load('C:\MATLAB\bin\person.txt');%将数据存放在纯文本文件person.txt
x=x';x=x(:);%按照时间的先后次序,把数据变为列向量
s=12;%周期s=12
n=12;%预报数据的个数
m1=length(x);%原始数据的个数
y=zeros(0,12);
for i=s+1:m1
    y(i-s)=x(i)-x(i-s);%进行周期差分变换
end
w=diff(y);
m2=length(w);%计算最终差分后数据的个数
k=0;%初始化试探模型的个数
for i=0:3
    for j=0:3
        if i==0&j==0
            continue
        elseif i==0
            ToEstMd=arima('MAlags',1:j,'Constant',0);
        elseif j==0
            ToEstMd=arima('ARLags',1:i,'Constant',0);
        else
            ToEstMd=arima('ARLags',1:i,'MAlags',1:j,'Constant',0);
        end
        k=k+1;R(k)=i;M(k)=j;
        [EstMd,EstParamCov,logL,info]=estimate(ToEstMd,ToEstMd,w');
        numParams=sum(any(EstParamCov));
        [aic(k),bic(k)]=aicbic(logL,numParams,m2);
    end
end
fprintf('R,M,AIC,BIC的对应值如下\n%f');
check=[R',M',aic',bic']
r=input('输入结束R=');m=input('输入阶数M=');
ToEstMd=arima('ARLags',1:r,'MALags',1:m,'Constant',0);
[EstMd,EstParamCov,logL,info]=estimate(ToEstMd,w');
w_Forecast=forecast(EstMd,n,'Y0',w')
yhat=y(end)+cumsum(w_Forecast)
for j=1:n
    x(m1+j)=yhat(j)+x(m1+j-s);
end
xhay=x(m1+1:end)


其中person.txt里面的数据是[1 2 3 4 5 6 7 8 9 10 11 12]

求大佬帮忙呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表