Vous êtes sur la page 1sur 8

EXP-8

Challenging Experiment 1
Indrajeet Kenjale
15BEI0019

AIM:
Write MATLAB R2017b program and explain the procedure. Plot and comment on the
results for the below mentioned challenging task.
(a) Take two audio signals, mix both of them and design an IIR filter to remove any one
audio signal from the mixed input audio signal, play the single audio. (Attach the audio
clips).
(b) Design a suitable filter to remove highest peak from ECG signal (R-Wave), justify the
selection of filter parameters. (Take any ECG signal from net).

APPRATUS REQUIRED:
MATLAB 2017B

CASE 1:When we mix two audio signal and remove 1 audio signal

MATLAB CODE:
Fs=44100;

y1=audioread('AUD1.mp3');

y2=audioread('AUD2.mp3');

minimumlength=min([length(y1),length(y2)]);

y1=y1(1:minimumlength);

y2=y2(1:minimumlength);
y3=y1+y2;

p=audioplayer(y3,Fs);

play(p);

sound(y3,Fs);

clear sound

h1pf=fdesign.lowpass('Fp,Fst,Ap,Ast',3000,3500,0.5,50,Fs);

D=design(h1pf);

s=filter(D,y3);

sound(s,Fs);

clear sound

subplot(4,1,1);

plot(y1);

title('Music 1')

subplot(4,1,2);

plot(y2);

title('Music 2')

subplot(4,1,3);

plot(y3);

title('Mixed of sound')

subplot(4,1,4);

plot(s);

title('filtered')

stereo_mix=y1;

N=Fs/2;

for n=N+1:length(y1)

stereo_mix(n,1)=y1(n,1)+y1(n-N,2);
stereo_mix(n,2)=y1(n,2)+y1(n-N,2);

end

sound(stereo_mix,Fs);

clear sound;

y1_left=y1(:,1);

y1_right=y1(:,2);

y1_left_minus_y1_right=y1_left-y_right;

sound(y1_left_minus_y1_right,fs);

clear sound;
CASE 1:When we mix two audio signal and remove 1 audio signal

MATLAB CODE:
for demo = 1:2:3
% Clear our variables
clearecgsamplingratecorrectedfiltered1peaks1filtered2peaks2fresult
% Load data sample
switch(demo)
case 1,
plotname = 'Sample 1';
loadecgdemodata1;
case 3,
plotname = 'Sample 2';
loadecgdemodata2;
end
% Remove lower frequencies
fresult=fft(ecg);
fresult(1 : round(length(fresult)*5/samplingrate))=0;
fresult(end - round(length(fresult)*5/samplingrate) : end)=0;
corrected=real(ifft(fresult));
% Filter - first pass
WinSize = floor(samplingrate * 571 / 1000);
if rem(WinSize,2)==0
WinSize = WinSize+1;
end
filtered1=ecgdemowinmax(corrected, WinSize);
% Scale ecg
peaks1=filtered1/(max(filtered1)/7);
% Filter by threshold filter
for data = 1:1:length(peaks1)
if peaks1(data) < 4
peaks1(data) = 0;
else
peaks1(data)=1;
end
end
positions=find(peaks1);
distance=positions(2)-positions(1);
for data=1:1:length(positions)-1
if positions(data+1)-positions(data)<distance
distance=positions(data+1)-positions(data);
end
end
% Optimize filter window size
QRdistance=floor(0.04*samplingrate);
if rem(QRdistance,2)==0
QRdistance=QRdistance+1;
end
WinSize=2*distance-QRdistance;
% Filter - second pass
filtered2=ecgdemowinmax(corrected, WinSize);
peaks2=filtered2;
for data=1:1:length(peaks2)
if peaks2(data)<4
peaks2(data)=0;
else
peaks2(data)=1;
end
end
% Create figure - stages of processing
figure(demo); set(demo, 'Name', strcat(plotname, ' - Processing Stages'));
% Original input ECG data
subplot(3, 2, 1); plot((ecg-min(ecg))/(max(ecg)-min(ecg)));
title('\bf1. Original ECG'); ylim([-0.2 1.2]);
% ECG with removed low-frequency component
subplot(3, 2, 2); plot((corrected-min(corrected))/(max(corrected)-min(corrected)));
title('\bf2. FFT Filtered ECG'); ylim([-0.2 1.2]);
% Filtered ECG (1-st pass) - filter has default window size
subplot(3, 2, 3); stem((filtered1-min(filtered1))/(max(filtered1)-min(filtered1)));
title('\bf3. Filtered ECG - 1^{st} Pass'); ylim([0 1.4]);
% Detected peaks in filtered ECG
subplot(3, 2, 4); stem(peaks1);
title('\bf4. Detected Peaks'); ylim([0 1.4]);
% Filtered ECG (2-d pass) - now filter has optimized window size
subplot(3, 2, 5); stem((filtered2-min(filtered2))/(max(filtered2)-min(filtered2)));
title('\bf5. Filtered ECG - 2^d Pass'); ylim([0 1.4]);
% Detected peaks - final result
subplot(3, 2, 6); stem(peaks2);
title('\bf6. Detected Peaks - Finally'); ylim([0 1.4]);
% Create figure - result
figure(demo+1); set(demo+1, 'Name', strcat(plotname, ' - Result'));
% Plotting ECG in green
plot((ecg-min(ecg))/(max(ecg)-min(ecg)), '-g'); title('\bf Comparative ECG R-Peak Detection Plot');
% Show peaks in the same picture
holdon
% Stemming peaks in dashed black
stem(peaks2'.*((ecg-min(ecg))/(max(ecg)-min(ecg)))', ':k');
% Hold off the figure
holdoff
end

GRAPH:
INFERENCE:
Filtering method depends on the type of noises in ECG signal. In some signals the noise level is
very high and it is not possible to recognize it by single recording, it isimportant to gain a good
understanding of the noise processes involved before one attempt to filter or preprocess a
signal. The ECG signal is very sensitive in nature, and even if small noise mixed with original
signal the characteristics of the signal changes. Data corrupted with noise must either filtered or
discarded, filtering is important issue for design consideration of real time heart monitoring
systems.For collection of ECG signal he has used band pass filter with cutoff frequency 0.5Hz-
150 Hz.

Vous aimerez peut-être aussi