矩阵方阵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
矩陣必須為方陣。
新手小白!求各位大神幫忙!!
總結
以上是生活随笔為你收集整理的矩阵方阵matlab,求助!!错误使用 inv 矩阵必须为方阵。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于matlab的人脸五官边缘检测方法,
- 下一篇: matlab函数画图创建gui,如何在M