How to apply a low-pass or high-pass filter to an array in Matlab?

Christian picture Christian · Nov 23, 2009 · Viewed 137.9k times · Source

Is there an easy way to apply a low-pass or high-pass filter to an array in MATLAB? I'm a bit overwhelmed by MATLAB's power (or the complexity of mathematics?) and need an easy function or some guidance as I couldn't figure it out from the documentation or searching the web.

Answer

Jason S picture Jason S · Nov 23, 2009

Look at the filter function.

If you just need a 1-pole low-pass filter, it's

xfilt = filter(a, [1 a-1], x);

where a = T/τ, T = the time between samples, and τ (tau) is the filter time constant.

Here's the corresponding high-pass filter:

xfilt = filter([1-a a-1],[1 a-1], x);

If you need to design a filter, and have a license for the Signal Processing Toolbox, there's a bunch of functions, look at fvtool and fdatool.