gm11 matlab程序,gm11运行报错,怎么办?

本人做一个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);

请高手指点!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值