-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsupport_PerformHarFilt.m
47 lines (40 loc) · 2.58 KB
/
support_PerformHarFilt.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function Pupdil = support_PerformHarFilt(Config, Samples)
log_i(['Filtering for frequency bands']);
if size(Config.HarFilt.TargetFreqRanges, 1) == 1
bandToFilter = [Config.HarFilt.TargetFreqRanges(1,1) Config.HarFilt.TargetFreqRanges(1,2)];
% Samples.Pupdil = bandpass(Samples.Pupdil, bandToFilter, Samples.SRate);
Hd = f_chebyshev(bandToFilter(1), bandToFilter(2), Samples.SRate, 2000, 'bandpass');
Pupdil = filtfilt(Hd.Numerator, 1, Samples.Pupdil);
log_i(['Applied passband filter for base frequency only: ' num2str(bandToFilter(1)) '-' num2str(bandToFilter(2)) 'Hz']);
else
for fic = 1:(size(Config.HarFilt.TargetFreqRanges, 1)-1) % 1. koordináta = sor index
bandToFilter = [Config.HarFilt.TargetFreqRanges(fic,2) Config.HarFilt.TargetFreqRanges(fic+1,1)];
Pupdil = bandstop(Samples.Pupdil, bandToFilter, Samples.SRate);
% % % Hd = f_chebyshev(bandToFilter(1), bandToFilter(2), Samples.SRate, 1000, 'stop');
% method = 'stop';
% order = 500; % Order
% flag = 'scale'; % Sampling Flag
% SidelobeAtten = 50; % Window Parameter
% win = chebwin(order+1, SidelobeAtten);
% b = fir1(order, bandToFilter/(Samples.SRate/2), method, win, flag);
% Hd = dfilt.dffir(b);
% Samples.Pupdil = filtfilt(Hd.Numerator, 1, Samples.Pupdil);
log_i(['Applied stopband filter: ' num2str(fic) ' / ' num2str((size(Config.HarFilt.TargetFreqRanges, 1)-1)) ]);
end
bandToFilter = [Config.HarFilt.TargetFreqRanges(1,1) Config.HarFilt.TargetFreqRanges(size(Config.HarFilt.TargetFreqRanges, 1), 2)];
Pupdil = bandpass(Samples.Pupdil, bandToFilter, Samples.SRate);
% Samples.Pupdil = highpass(Samples.Pupdil, bandToFilter(1), Samples.SRate);
% Samples.Pupdil = lowpass(Samples.Pupdil, bandToFilter(2), Samples.SRate);
% % % Hd = f_chebyshev(bandToFilter(1), bandToFilter(2), Samples.SRate, 1000, 'bandpass');
% method = 'bandpass';
% order = 500; % Order
% flag = 'scale'; % Sampling Flag
% SidelobeAtten = 50; % Window Parameter
% win = chebwin(order+1, SidelobeAtten);
% b = fir1(order, bandToFilter/(Samples.SRate/2), method, win, flag);
% Hd = dfilt.dffir(b);
% Samples.Pupdil = filtfilt(Hd.Numerator, 1, Samples.Pupdil);
log_i(['Applied passband filter as finish']);
end
log_i(['Done :)']);
end