作业帮 > 综合 > 作业

matlab几个矩阵相乘报错

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 13:45:10
matlab几个矩阵相乘报错
? Error using ==> mtimes
Inner matrix dimensions must agree.
Error in ==> GM1_1 at 16
A=inv(BT*B)*BT*Yn;
这样乘不对么?
B=ones(n-1,2);
for i=1:(n-1)
B(i,1)=-(x1(i)+x1(i+1))/2;
end
BT=B';
for j=1:(n-1)
Yn(j)=x0(j+1);
end
Yn=Yn';
A=inv(BT*B)*BT*Yn;
B=ones(n-1,2);
for i=1:(n-1)
B(i,1)=-(x1(i)+x1(i+1))/2;
end
BT=B';
Yn=zeros(n-1,1);
for j=1:(n-1)
Yn(j)=x0(j+1);
end
A=inv(BT*B)*BT*Yn;
你原来的程序也没有错,第一次可以运行,但是第二次运行就会错
原因是你的Yn是没有初始化就使用了
你用循环赋值Yn(1)=...,Yn(2)=..
最后Yn是一个1x(n-1)的行向量
为了合适运算你用了Yn=Yn‘ 将其转置为列向量
这时候一切正常,都没有错
但是当你第二次运行这些代码的时候,Yn已经是个(n-1)x1的列向量了
赋值Yn(1)=...,Yn(2)=..之后,它依然是个列向量
这时候Yn=Yn‘ 就将其转置为行向量,再进行下面的运算,维度不对就报错了
为了避免这样的错误,Yn的大小也是一已知的
可以利用Yn=zeros(n-1,1)先为Yn分配存储空间,并确定其为列向量
这样就不会有问题