Why am I getting this error "??? error using ==> times matrix dimensions must agree" in matlab?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Cedric
el 21 de Abr. de 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 comentarios
Más respuestas (2)
the cyclist
el 21 de Abr. de 2013
Editada: the cyclist
el 21 de Abr. de 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 comentarios
Chandra Shekhar
el 21 de Abr. de 2013
Editada: Chandra Shekhar
el 21 de Abr. de 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 comentarios
Ver también
Categorías
Más información sobre Filter Design en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!