2017-10-08 230 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