作业帮 > 综合 > 作业

MATLAB矩阵相乘老是错误

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 06:09:19
MATLAB矩阵相乘老是错误
>> clear
>> n1=2.8;
n2=1.4;
d1=138;
d2=276;
d=d1+d2;
lamda=1000:1:2000;
delta1=2*pi*n1*d1/lamda;
delta2=2*pi*n2*d2/lamda;
M1=[cos(delta1) i*sin(delta1)/n1;i*n1*sin(delta1) cos(delta1)];
M2=[cos(delta2) i*sin(delta2)/n2;i*n2*sin(delta2) cos(delta2)];
M=((M1)*(M2))^6;
矩阵到底哪里错了,应该怎么改
delta1=2*pi*n1*d1/lamda;
delta2=2*pi*n2*d2/lamda;
这两部,lamda是个向量,一个数没法这样除以一个向量,应该改为点除,做单元运算:
delta1=2*pi*n1*d1./lamda;
delta2=2*pi*n2*d2./lamda;
顺便说一下,这样改之后M=((M1)*(M2))^6;也不对
因为M1和M2完全不满足矩阵乘法时矩阵的要求
再问: M1和M2不都是2X2的矩阵吗,为什么不能相乘,刚刚学习,请赐教
再答: lamda=1000:1:2000;这可是个1x1001的向量 首先2*pi*n1*d1是一个数,一个数是不能除以一个向量的。 变为点乘后,delta1和delta2都变成了大小为1x1001的向量 同理,按照你的定义,cos(delta1),sin(delta1)都变成了1x1001的向量,于是矩阵M1、M2变成了尺寸为2x2002的矩阵。M1、M2当然不能相乘了。