%% L12_Audio_Filtering %% ====================== %% Script to illustrate application of Butterworth filters (lowpass, %% highpass, bandpass and bandstop) to a digital audio signal. %% %% Created : 24 Aug 2005 %% Modified : 24 Aug 2005 %% %% Copyright (c) 2005 Salman Durrani. %% ------------------------------------------------------------ clc clear all close all %% wav file [Ysignal,Fs]=wavread('speech_dft'); % [Ysignal,Fs]=wavread('wchimes30'); %% Chip.mat is available inside Matlab %% Fs=8192 Hz % load chirp % Ysignal=y; %% Nyquist Freq Fn = Fs/2; %% Filter order = 2*n n=8; %% Low pass filter Fc=1000; [num,den] = butter(n,Fc/Fn,'low'); %% High pass filter % Fc=1000; % [num,den] = butter(n,Fc/Fn,'high'); %% Bandstop filter % Fc= [300 1500]; % [num,den] = butter(2,Fc./Fn,'stop'); %% Bandpass filter % Fc= [3000 3200]; % [num,den] = butter(n,Fc./Fn); %% Analyse filter fvtool(num,den) %% Apply the filter Yfiltered = filter(num,den, Ysignal); %% Compare time domain signal figure subplot(2,1,1) plot(Ysignal); title('Original Signal') xlabel('Time Sample n') ylabel('Amplitude') subplot(2,1,2) plot(Yfiltered); title('Filtered Signal') xlabel('Time Sample n') ylabel('Amplitude') %% Compare spectrum figure subplot(2,1,1) PlotFFT(Ysignal,Fs); title('Original Signal') subplot(2,1,2) PlotFFT(Yfiltered,Fs); title('Filtered Signal') %% Play sound wavplay(Ysignal,Fs) pause(2); wavplay(Yfiltered,Fs)