全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1140 1
2015-03-09
本人做一个gm11的matlab程序,程序如下:
function GM1_1(X0)
%format long ;
[m,n]=size(X0);
X1=cumsum(X0);   %累加
X2=[];
for i=1:n-1
    X2(i,:)=X1(i)+X1(i+1);
end
B=-0.5.*X2 ;
t=ones(n-1,1);
B=[B,t]  ;      % 求B矩阵
YN=X0(2:end)  ;
P_t=YN./X1(1:(length(X0)-1)) %对原始数据序列X0进行准光滑性检验,
                            %序列x0的光滑比P(t)=X0(t)/X1(t-1)
A=inv(B.'*B)*B.'*YN.' ;
a=A(1)
u=A(2)
c=u/a  ;
b=X0(1)-c ;
X=[num2str(b),'exp','(',num2str(-a),'k',')',num2str(c)];
strcat('X(k+1)=',X)
%syms k;
for t=1:length(X0)
     k(1,t)=t-1;
end
k
Y_k_1=b*exp(-a*k)+c;
for j=1:length(k)-1
   Y(1,j)=Y_k_1(j+1)-Y_k_1(j);
end
XY=[Y_k_1(1),Y]    %预测值
CA=abs(XY-X0) ;    %残差数列
Theta=CA       %残差检验 绝对误差序列
XD_Theta= CA ./ X0   %残差检验 相对误差序列
AV=mean(CA);       % 残差数列平均值

R_k=(min(Theta)+0.5*max(Theta))./(Theta+0.5*max(Theta)) ;% P=0.5
R=sum(R_k)/length(R_k)  %关联度
Temp0=(CA-AV).^2 ;
Temp1=sum(Temp0)/length(CA);
S2=sqrt(Temp1) ;    %绝对误差序列的标准差
%----------
AV_0=mean(X0);     % 原始序列平均值
Temp_0=(X0-AV_0).^2 ;
Temp_1=sum(Temp_0)/length(CA);
S1=sqrt(Temp_1)   ;     %原始序列的标准差
TempC=S2/S1*100;      %方差比
C=strcat(num2str(TempC),'%')   %后验差检验  %方差比   
%----------
SS=0.675*S1 ;
Delta=abs(CA-AV) ;
TempN=find(Delta<=SS);
N1=length(TempN);
N2=length(CA);
TempP=N1/N2*100;
P=strcat(num2str(TempP),'%')   %后验差检验    %计算小误差概率

我输入了x0=[2.3 4.5 6.7 8.9],然后运行,但是运行结果报错:
Input argument "X0" is undefined.
Error in ==> GM1_1 at 3
[m,n]=size(X0);
请高手指点!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-3-10 08:29:20
这个问题很难吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群