I have a datafile contains data sets (size 200* 15) .how can I apply on all the data a lowpass butterworth filter of 2-order with cutoff fre 10 HZ

1 visualización (últimos 30 días)
How can I call filter function like [b,a] = butter(n,Wn) or [b,a] = butter(n,Wn,ftype) for whole data file and collect them in another for further use.

Respuesta aceptada

David J. Mack
David J. Mack el 29 de Dic. de 2016
Editada: David J. Mack el 29 de Dic. de 2016
Hey Rahul,
use FILTER with the coefficients created with BUTTER, e.g.:
%Assuming X is your 200x15 data matrix and fSInHz is the sampling rate of the data.
filtFCInHz = 10; %Cut-off frequency.
filtOrder = 2; %Order.
[b,a] = butter(filtOrder,filtFCInHz/(fSInHz/2)); %Normalize against Nyquist frequency.
Y = filter(b,a,X); %Y is the filtered 200x15 output.
If you want to apply zero-phase filtering (which is recommended for time series), use FILTFILT instead of FILTER.
Greetings, David
  4 comentarios
Rahul Pandey
Rahul Pandey el 30 de Dic. de 2016
Editada: Rahul Pandey el 30 de Dic. de 2016
what is the best way to find the sampling rate of data for using with filters like lowpass butterworth filter(two pass - forward and backward Zero-phase digital filtering) of 2-order with cutoff freq 10 HZ that u answered.
David J. Mack
David J. Mack el 11 de En. de 2017
Do you have a time vector for your data? If so, use:
fSInHz = mode(diff(t,[],1),1);
Assuming t is a 200xk column-oriented array with the time for each sample in seconds. If k==1 (uniform sampling rate) fSInHz is a scalar, if k==15 (different sampling rates for each column in X) it is a 1x15 row vector.

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by