Why am I getting this error "??? error using ==> times matrix dimensions must agree" in matlab?

조회 수: 15 (최근 30일)
design a FIR low pass filter using Kaiser window
a1phap=0.1
a1phas=44
ws=30
wp=20
wsf=100
B=ws-wp
wc=0.5*(ws+wp)
wcr=wc*2*pi/wsf
D=(a1phas-7.95)/14.36
N=ceil((wsf*D/B)+1)
a1pha=(N-1)/2
gamma=(.5842*(a1phas-21).^(0.4)+0.07886*(a1phas-21))
n=0:1:N-1
hd=sin(wcr*(n-a1pha))./(pi*(n-a1pha))
hd(a1pha+1)=0.5
wk=(kaiser(N,gamma))
hn=hd.*wk % *(HERE I AM GETTING THIS ERROR)*
W=85:5:120
h=freqz(hn,1,W)
plot(W/pi,20*log10(abs(h)))
those two matrices have the same dimensions of 27..still why this error?

채택된 답변

Cedric
Cedric 2013년 4월 21일
You have to transpose either wk or hd, because one is a column vector and the other a row vector. E.g.
hn = hd .* wk.'

추가 답변 (2개)

the cyclist
the cyclist 2013년 4월 21일
편집: the cyclist 2013년 4월 21일
I don't have the Signal Processing Toolbox, so I can't execute the kaiser() function. However, the documentation indicates that it will output a column vector. Your vector hd is a row vector, so it does not actually have the same dimension. You need to transpose one of them.

Chandra Shekhar
Chandra Shekhar 2013년 4월 21일
편집: Chandra Shekhar 2013년 4월 21일
Don't use dot product,edit that line like this
hn=hd*wk;
but you will get single value after multiplying,but 'freqz' function requires vector as a input.
if you need vector then do like this, you will get waveform.
hn=hd. * wk ' ;

카테고리

Help CenterFile Exchange에서 Matched Filter and Ambiguity Function에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by