解决matlab“矩阵尺寸必须一致”的错误
问题描述:
我一直在试图做这个问题,但不管我如何去解决它,我得到这个错误。解决matlab“矩阵尺寸必须一致”的错误
什么想法?
的问题是
“矩阵尺寸必须同意”
bb = [1,1.18,1]; %-- Filter Coefficients
nn = 1:150;
L2 = 0:9; % M - 1(10-1 = 9)
%1st at 0.3
w1 = (0.2*cos(0.44*pi*nn)) .* (exp(-1i * 0.3 * 3.14 * L2)) ;
%2nd at 0.44
w2 = 0.2*cos(0.44*pi*nn) .* exp(-1i*0.44*3.14*L2);
%3rd at 0.7
w3 = 0.2*cos(0.44*pi*nn) .* exp(-1i*0.7*3.14*L2);
wt = w1 + w2 + w3;
HTOTAL = freqz(bb, 1, wt);
H1 = freqz(bb, 1, w1); %
H2 = freqz(bb, 1, w2); %
H3 = freqz(bb, 1, w3); %
%set the value of x to see the filter
x = 1;
subplot(2,1,1); plot(wx, abs(HH))
subplot(2,1,2); plot(wx, angle(HH))
xlabel('Normalized Radian Frequency')
答
你乘(0.2*cos(0.44*pi*nn))
通过(exp(-1i*0.3*3.14*L2))
试图逐个元件。这里的问题是第一个数组包含nn = 150
元素,而第二个数组包含L2 = 10
个元素。
看着原来的问题,它看起来像你需要使用的10滤波器长度(L2
),但你的nn
阵列范围从1到150,而不是需要0-9
你应使用(0.2*cos(0.44*pi*L2))
而不是(0.2*cos(0.44*pi*nn))
来修复您的“矩阵尺寸必须一致”错误。
嗨,队友谢谢你的提示! 这是有道理的,我曾经以为我是想保持与之前的问题相同的范围。 – lolcatsnin
虽然现在在使用freqz获取错误时,Options必须是字符向量或实数,标量或向量值。 这是我假设是因为。*对指数 抱歉是一个痛苦,但你有任何提示,以及:/ – lolcatsnin
看起来像你错误的变量传递到'freqz()'。第三个参数应该是单个值,但是你想要传入一个向量('wt/w1/w2/w3')。你仍然需要使用'bb'来解决这个问题吗?如果不是的话,如果你简单地使用'freqz(wt,1);'(没有'HTOTAL'),它可能会更有意义。 – frslm