Why am I getting this error "??? error using ==> times matrix dimensions must agree" in matlab?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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?
0 commentaires
Réponse acceptée
Cedric
le 21 Avr 2013
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.'
0 commentaires
Plus de réponses (2)
the cyclist
le 21 Avr 2013
Modifié(e) : the cyclist
le 21 Avr 2013
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.
0 commentaires
Chandra Shekhar
le 21 Avr 2013
Modifié(e) : Chandra Shekhar
le 21 Avr 2013
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 ' ;
0 commentaires
Voir également
Catégories
En savoir plus sur Filter Design dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!