function Interval = Filtering(sig,start,End,Fs)
% sig : name of signal
% start : point of the start
% end : point of the end
% Fs : sampling rate
%% load signal
path = ['C:\Users\osr09\Desktop\ROK\matlab\matlab_code\Data\ECGdata\data\'];
filename = num2str(sig);
load([path filename 'm'])
sig = val(1,start:End);
figure
subplot(4,1,1);plot(sig);title('origin ECG');axis tight
%% Cancelling & normallize
sig = sig - mean(sig); % cancel DC
sig = sig / max(abs(sig)); % normalize
subplot(4,1,2);plot(sig);title('Normallize');axis tight
%% LPF
b = [1 0 0 0 0 0 -2 0 0 0 0 0 1];
a = [1 -2 1];
h_LP = filter(b, a, [1 zeros(1,12)]); % transfer function
sig = conv(sig, h_LP);
sig = sig / max(abs(sig));
subplot(4,1,3);plot(sig);title('LPF')
%% High Pass Filtering
b = [-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 -32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1];
a = [1 -1];
h_HP = filter(b, a, [1 zeros(1, 32)]); % impulse response
sig = conv(sig, h_HP);
sig = sig / max(abs(sig));
subplot(4,1,4);plot(sig);title('HPF')
%% Wavelet Transform
wt = modwt(sig, 5);
wtrec = zeros(size(wt));
wtrec(4:5,:) = wt(4:5,:);
y = imodwt(wtrec, 'sym4');
y = abs(y).^2;
[qrspeaks, locs] = findpeaks(y,'MinPeakHeight', mean(y), 'MinPeakDistance',Fs*0.5);
for k=1:length(locs)-1
if k==1
Interval = locs(k+1) - locs(k);
peaks = qrspeaks(k+1) - qrspeaks(k);
else
Interval = [Interval; locs(k+1) - locs(k)];
peaks = [qrspeaks; qrspeaks(k+1) - qrspeaks(k)];
end
end
Interval = Interval(find(Interval<400));
figure
plot(y)
hold on
plot(locs, qrspeaks, 'ro')
figure
plot(sig)
hold on
plot(locs, sig(locs), 'ro')
end