作业帮 > 综合 > 作业

matlab 显示?Error using ==> mtimes Inner matrix dimensions mus

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/26 01:28:55
matlab 显示?Error using ==> mtimes Inner matrix dimensions must agree.
这是灰色线性回归组合模型的MATLAB程序:
X0=[424.93,441.68,468.9,479.36,495.4,517.29,553.37,564.08,564.48,605.93,625.82];
n=length(X0);
% 由原始序列XO生成累加序列X1
X1=cumsum(X0(1:n));
% 求解参数v的估值VB
for i=1:n-1
Z(i)=X1(i+1)-X1(i);
end
for m=1:n-3
fort=1:n-1-m
Y(m,t)=Z(t+m)-Z(t);
end
fort=1:n-2-m
V(m,t)=log(Y(m,t+1)/Y(m,t));
end
end
VA=2*sum(V(1:n-3,1:n-3))/((n-2)*(n-3));
VB=sum(VA);
% 形成系数矩阵A和矩阵Y
forj=1:n
A(j,1)=exp(VB*j);
A(j,2)=j;
A(j,3)=1;
end
Y=X1(1:n)';
% 构建权阵P
fori=1:8
forj=1:8
ifi==j
P(i,j)=1.5^(i-1);
else
P(i,j)=0;
end
end
end
% 计算参数估值C1,C2,C3
C=inv(A'*P*A)*A'*P*Y;
C1=C(1);
C2=C(2);
C3=C(3);
% 求出序列X1的预测值X2
for i=1:n+3
X2(i)=C1*exp(VB*i)+C2*i+C3;
end
% 求出原始序列的模拟值及预测值X3
for i=1:n+2
X3(i+1)=X2(i+1)-X2(i);X3(1)=X2(1);
end
1、你贴的代码有多处for、if后面缺少空格,导致语法错误.不过,从你遇到的错误看,程序是能运行的,看来应该是你粘贴时出的问题. 2、运行到下面一行的时候C=inv(A'*P*A)*A'*P*Y;A是11x3矩阵,P是8x8矩阵,A'*P*A当然不能计算,因为矩阵相乘要求内维相等. 3、怀疑这段程序本来处理的问题是X0的长度为8,而这个数被直接写在程序里了,你换了包含11个元素的X0就不能用了.把【构建权阵P】下面的两个for循环的8换成n,程序即可运行.但我只是猜测,没仔细研究你的算法,是否应该这样改,还是需要你自行斟酌.