Commit 65ad114c authored by mayucel's avatar mayucel
Browse files

modified bandpass to optionally filter dod or aux or both or none

parent 17c7b329
Loading
Loading
Loading
Loading
+88 −58
Original line number Diff line number Diff line
% SYNTAX:
% data2 = hmrR_BandpassFilt( data, hpf, lpf )
% [data2, Aux2] = hmrR_BandpassFilt(data, Aux, hpf, lpf, turnon_dod, turnon_aux )
%
% UI NAME:
% Bandpass_Filter
@@ -10,38 +10,62 @@
% INPUT:
% data - SNIRF data type containing data time course to filter, time
%       vector, and channels.
% Aux - auxilliary data
% hpf - high pass filter frequency (Hz)
%       Typical value is 0 to 0.02.
% lpf - low pass filter frequency (Hz)
%       Typical value is 0.5 to 3.
% turnon_dod - apply filter on dod when set to 1
% turnon_aux - apply filter on aux when set to 1
%
% OUTPUT:
% data2 - SNIRF data type containing the filtered data time course, time
%        vector, and channels.
% Aux2 - filtered aux
%
% USAGE OPTIONS:
% Bandpass_Filter: dod = hmrR_BandpassFilt( dod, hpf, lpf )
% Bandpass_Filter: [dod, Aux2] = hmrR_BandpassFilt(dod, Aux, hpf, lpf, turnon_dod, turnon_aux )
%
% PARAMETERS:
% hpf: [0.010]
% lpf: [0.500]
%
% turnon_dod: 1
% turnon_aux: 1

function [data2, Aux2] = hmrR_BandpassFilt(data, Aux, hpf, lpf, turnon_dod, turnon_aux)

function [data2, ylpf] = hmrR_BandpassFilt( data, hpf, lpf )
if isa(data, 'DataClass')
if turnon_dod && turnon_aux
    foo{1} = data;
    foo{2} = Aux;
    data2 = DataClass().empty();
    Aux2 = AuxClass().empty();
elseif turnon_dod
    foo{1} = data;
    data2 = DataClass().empty();
elseif isa(data, 'AuxClass')
    data2 = AuxClass().empty();
    Aux2 = Aux;
elseif turnon_aux
    foo{1} = Aux;
    Aux2 = AuxClass().empty();
    data2 = data;
else
    data2 = data;
    Aux2 = Aux;
    return
end

for i = 1:size(foo,2)
    ylpf = [];
for ii=1:length(data)
    if isa(data, 'DataClass')
        data2(ii) = DataClass(data(ii));
    elseif isa(data, 'AuxClass')
        data2(ii) = AuxClass(data(ii));
    end
    for ii=1:length(foo{i})
        if isa(foo{i}, 'DataClass')
            data2(ii) = DataClass(foo{i}(ii));
            y = data2(ii).GetDataTimeSeries();
            fs = data2(ii).GetTime();
        elseif isa(foo{i}, 'AuxClass')
            Aux2(ii) = AuxClass(foo{i}(ii));
            y = Aux2(ii).GetDataTimeSeries();
            fs = Aux2(ii).GetTime();
        end
        
        
        % convert t to fs
        % assume fs is a time vector if length>1
@@ -78,7 +102,13 @@ for ii=1:length(data)
        else
            y2 = ylpf;
        end
        
        if isa(foo{i}, 'DataClass')
            data2(ii).SetDataTimeSeries(y2);
        elseif isa(foo{i}, 'AuxClass')
            Aux2(ii).SetDataTimeSeries(y2);
        end
        
    end
    
end
 No newline at end of file