Bandpass filter
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I want to run a signal through bandpass filter, but the data is sent one by one.
t=0:0.0000001:1;
a=sin(2*pi*250*t)+sin(2*pi*500*t);
wn=[(240*0.00000001/2) (260*0.00000001/2)];
[B,A]=butter(2,wn,'bandpass');
for ii=0:length(t)
z(ii)=filter(B,A,a(ii));
end
I'm getting wrong data from the filter. What is wrong with the code??
0 comentarios
Respuesta aceptada
Jan
el 27 de Mzo. de 2012
The wn contain very low frequencies. Is this really wanted?
You cannot filter scalars. Try to omit the loop:
z = filter(B,A,a);
If you really have a good reason to filter the data element by element, you have to consider the current status of the filter:
s = [];
z = zeros(1, length(t)); % pre-allocate!
for ii = 1:length(t) % Not 0:length(t) !
[z(ii), s] = filter(B, A, a(ii), s);
end
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Fourier Analysis and Filtering 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!