Matlab中向量代入矩阵运算出现的错误.
问题描述:
Matlab中向量代入矩阵运算出现的错误.
我把向量代入复数矩阵运算时出错,程序如下:
f=(0:0.1:1);
w=f.*(2*pi);
A=[1,i*2;0,1];
B=[1,i*3;0,1];
C=[1,i*4;0,1];
D=(A*B*C).*w;
y=1/sum(D(:));
plot(f,y);
请各位大侠看看,错在哪里啊.
我的本意是要把 w向量与 A、B、C三个矩阵中的一个元素相乘,然后将A、B、C三个矩阵相乘,即:
A=[1,i*2.*w;0,1];
B=[1,i*3.*w;0,1];
C=[1,i*4.*w;0,1];
D=A*B*C;
有没有好的办法实现呢.
答
错在维数不一致,看看,f的大小是1x10,那么w的维数也是1x10,而A,B,C的大小都是2x2,那么你的D = (A*B*C).*w; 你是想用一个2x2的矩阵(A*B*C)去点乘一个1x10的向量么?这个通不过的.请看下我的问题补充,A、B、C三个矩阵中的i*2.*w、i*3.*w、i*4.*w 分别是求一个电容或者电感的阻抗,w是频率的范围,频率不同电容或电阻的阻抗是不同的,所以我把w设计成一个向量,我最后是想通过程序得到一个波形的。你写得很纠结的样子,考虑用for循环吧,该用的时候还是要用的,向量化不是万能的。y(n) = zeros(size(w));for n = 1:length(w) A=[1,i*2.*w(n);0,1]; B=[1,i*3.*w(n);0,1]; C=[1,i*4.*w(n);0,1]; D =A*B*C; y(n) = 1/sum(D(:));endplot(f,y);