矩阵方阵matlab,求助!!错误使用 inv 矩阵必须为方阵。

>> clear;

%输入原始数据和预测长度

x0=[95.94,129.46,156.29,145.24,115.07,173.51,253.91];

x=[1,2,3,4,5,6,7,8,9,10];

n1=length(x0);

n2=length(x);

n1,n2,x0 %进行1-AGO生成

x1=zeros(1,7);

x1(1,1)=x0(1,1);

for k=2:7

x1(1,k)=x1(1,k-1)+x0(1,k);

end

%进行紧邻均值生产

z1=zeros(1,6);

for k=1:6

z1(1,k)=0.5.*[x1(1,k)+x1(1,k+1)];

end

%计算矩阵B和向量yn

B=zeros(6,2);

yn=zeros(6,1);

for k=1:6

B(k,1)=-z1(1,k);

B(k,2)=1;

yn(k,1)=x0(1,k+1);

end

%计算未知参数a和u

A=zeros(2,1);

A=inv(B.*B).* B.* yn;

a=A(1,1);

u=A(2,1);

%微分方程的离散化解

xx1=zeros(1,7);

xx1(1,1)=x0(1,1);

for k=1:6

xx1(1,k+1)=(x0(1,1)-u/a).*exp(-a.*k)+u/a;

end

%建立的GM(1,1)模型

xx0=zeros(1,7);

xx0(1,1)=x0(1,1);

for k=2:7

xx0(1,k)=xx1(1,k)-xx1(1,k-1);

end

xx0

%残差计算

e0=zeros(1,7);%绝对残差

for k=1:7

e0(k)=x0(1,k)-xx0(1,k);

end

e0

q=zeros(1,7);%相对残差

for k=1:7

q(k)=e0(k)/x0(1,k);

end

q

averq=zeros(1);%平均误差

averq=mean(abs(q));

%后验差计算

averx0=zeros(1);%x0平均值

averx0=mean(x0);

S1=zeros(1);%x0均方差

for k=1:7

S1=S1+(x0(k)-averx0)^2

end

S1=(S1/(6))^0.5;

avere0=zeros(1);%e0平均值

avere0=mean(abs(e0));

S2=zeros(1);%e0均方差

for k=1:7

S2=S2+(e0(k)-avere0)^2;

end

S2=(S2/(6))^0.5;

C=zeros(1);%后验差比值

C=S2/S1;

p=zeros(1);%小误差概率

count=zeros(1);

for k=1:7

if e0(k)-avere0<0.6745.*S1

count=count+1;

end

end

p=count/7;

%关联度计算

r=zeros(1);

for k=1:7

r=r+(min(abs(e0))+0.5.*max(abs(e0)))/(e0(k)+0.5.*max(abs(e0)))/7;

A=inv(B);

end

n1 =

7

n2 =

10

x0 =

95.9400  129.4600  156.2900  145.2400  115.0700  173.5100  253.9100

错误使用 inv

矩阵必须为方阵。

新手小白!求各位大神帮忙!!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值