EXP-8 Challenging Experiment – 1 Indrajeet Kenjale 15BEI0019
AIM: Write MATLAB R2017b program and explain the pro cedure. 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), (R -Wave), justify the selection of filter parameters. (Take any ECG signal from net).
APPRATUS REQUIRED: MATLAB 2017B
CASE CASE 1:When 1:When we mix tw o audio s ignal ign al and remove 1 audio s ign al MATLAB CODE: 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 tw o audio s ignal and remove 1 audio s ignal
MATLAB CODE: for demo = 1:2:3 % Clear our variables clear ecgsamplingratecorrectedfiltered1peaks1filtered2peaks2fresult % 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)
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 n ature, 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.5Hz150 Hz.