2017-10-08 561 views
1

我一直在试图做这个问题,但不管我如何去解决它,我得到这个错误。解决matlab“矩阵尺寸必须一致”的错误

什么想法?

的问题是

enter image description here

“矩阵尺寸必须同意”

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

你乘(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))来修复您的“矩阵尺寸必须一致”错误。

+1

嗨,队友谢谢你的提示! 这是有道理的,我曾经以为我是想保持与之前的问题相同的范围。 – lolcatsnin

+0

虽然现在在使用freqz获取错误时,Options必须是字符向量或实数,标量或向量值。 这是我假设是因为。*对指数 抱歉是一个痛苦,但你有任何提示,以及:/ – lolcatsnin

+0

看起来像你错误的变量传递到'freqz()'。第三个参数应该是单个值,但是你想要传入一个向量('wt/w1/w2/w3')。你仍然需要使用'bb'来解决这个问题吗?如果不是的话,如果你简单地使用'freqz(wt,1);'(没有'HTOTAL'),它可能会更有意义。 – frslm

相关问题