function t = lowpassfilt(t, n, cutoff_freq)

% lowpassfilt - Applies a low-pass Butterworth filter to the trace data.
%
% Usage:
% t = lowpassfilt(t, n, cutoff_freq)
%
% Parameters:
%   t: A trace object.
%   n: Order of the filter
%   cutoff_freq: Cutoff frequency, max <= sampling rate/2 [Hz].
%
% Returns:
%   t: updated trace object.
%
% Description:
%
% See also: trace, butter, filter, filtfilt
%
% $Id$
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2010/04/08

% Copyright (c) 2010 Cengiz Gunay <cengique@users.sf.net>.
% This work is licensed under the Academic Free License ("AFL")
% v. 3.0. To view a copy of this license, please look at the COPYING
% file distributed with this software or visit
% http://opensource.org/licenses/afl-3.0.php.

cutoff_norm = cutoff_freq * get(t, 'dt') * 2;

[b, a] = butter(n, cutoff_norm);

data = get(t, 'data');

for col_num=1:size(data, 2)
  data(:, col_num) = filtfilt(b, a, data(:, col_num));
end

t = set(t, 'data', data);