Highpass cut filter using Online lowpass filter y = vb_online_highpass_cut(x,Fs,Fc) y = vb_online_highpass_cut(x,Fs,Fc,init_mode) --- Input Fs : Sampling frequencies (Hz) Fc : Center frequencies (Hz) for lowpass filter x : Input signal [D x T] --- Optional Input if init_mode = 1, initial value of lowpass state variable is Initialized by first one cycle (= Fs/Fc) data --- Output y : output signal by online highpass filter [D x T] 2009-6-20 Masa-aki Sato Copyright (C) 2011, ATR All Rights Reserved. License : New BSD License(see VBMEG_LICENSE.txt)
0001 function y = vb_online_highpass_cut(x,Fs,Fc,init_mode) 0002 % Highpass cut filter using Online lowpass filter 0003 % y = vb_online_highpass_cut(x,Fs,Fc) 0004 % y = vb_online_highpass_cut(x,Fs,Fc,init_mode) 0005 % --- Input 0006 % Fs : Sampling frequencies (Hz) 0007 % Fc : Center frequencies (Hz) for lowpass filter 0008 % x : Input signal [D x T] 0009 % --- Optional Input 0010 % if init_mode = 1, 0011 % initial value of lowpass state variable is Initialized 0012 % by first one cycle (= Fs/Fc) data 0013 % --- Output 0014 % y : output signal by online highpass filter [D x T] 0015 % 0016 % 2009-6-20 Masa-aki Sato 0017 % 0018 % Copyright (C) 2011, ATR All Rights Reserved. 0019 % License : New BSD License(see VBMEG_LICENSE.txt) 0020 0021 [Nch,T] = size(x); 0022 0023 % Initialize lowpass filter 0024 [a, z] = vb_lowpass_init(Fs,Fc,Nch); 0025 0026 if nargin == 4 && init_mode == 1 0027 T0 = min( ceil(Fs/Fc) , T); % one cycle length 0028 0029 % Calculate initial value for lowpass component from initial signal 0030 [y0, z] = vb_online_lowpass_filt(a(1), x(:,T0:-1:1), z); 0031 end 0032 0033 [y , z] = vb_online_highpass_filt(a(1), x, z); 0034 0035 return 0036 0037 [Nch,T] = size(x); 0038 0039 % Calculate initial value for lowpass component from initial signal 0040 for t=1:T0 0041 z = vb_online_lowpass(a,x(:, t),z); 0042 end 0043 0044 y = zeros(Nch,T); 0045 0046 % Online highpass filtering by subtracting lowpass component from signal 0047 for t=1:T 0048 [y(:,t), z] = vb_online_highpass(a, x(:, t), z); 0049 end