%
% Filename: example19.m
%
% Description: M-file demonstrating IIR filter implemented via a
% difference equation.
%
figure(1); clf; clear; % clear figure and memory
w = -3000:0.5:3000; % CT frequency values
Hw = 628./(j*w + 628); % compute and plot CT filter frequency response
subplot(2,1,1); plot(w,abs(Hw));
xlabel('\omega '); ylabel('|H(w)|');
title('Magnitude of CT LP Filter Frequency Response');
T = 2*pi/3000; % sampling interval
W = -pi:0.01:pi; % DT frequency values
HW = 628*T*(exp(j*W)+1)./((2+628*T)*exp(j*W)-2+628*T);
subplot(2,1,2); plot(W,abs(HW));
xlabel('\Omega '); ylabel('|H(W)|');
title('Magnitude of DT LP Filter Frequency Response');
figure(2); clf; clear; % clear figure and memory
tmax = 0.1; % define and plot CT signal
t = 0:0.001:tmax;
x = cos(50*t) + cos(500*t) + cos(1000*t);
subplot(2,1,1);
plot(t,x); hold on;
T = 2*pi/3000; % sample CT signal to get DT signal
n = 0:tmax/T; % and then plot DT signal
xn = cos(50*n*T) + cos(500*n*T) + cos(1000*n*T);
stem(n*T,xn,'filled');
hold off;
xlabel('t '); ylabel('x(t), x[n]');
title('CT Signal and DT Signal from Sampling');
Xk = fft(xn); % compute and plot DFT of DT signal
subplot(2,1,2);
stem(2*pi*n/(length(Xk)*T), abs(Xk),'filled');
xlabel('\omega '); ylabel('|X_k|');
title('DFT Magnitude Spectrum of x[n]');
figure(3); clf; clear n; % clear figure and n-variable
yprev = 0; xprev = 0; % initial values for recursion
for n = 0:length(xn)-1, % begin filtering via recursion
x = xn(n+1);
y = -((628*T-2)/(628*T+2))*yprev + (628*T/(628*T+2))*(x + xprev);
yprev = y;
xprev = x;
yvec(n+1) = y;
nvec(n+1) = n;
end;
subplot(2,1,1); % plot filtered signal
stem(nvec*T,yvec,'filled');
xlabel('t '); ylabel('y[n]');
title('Low Pass Filtered DT Signal');
Yk = fft(yvec);
subplot(2,1,2);
stem(2*pi*nvec/(length(Yk)*T), abs(Yk),'filled');
xlabel('\omega '); ylabel('|Y_k|');
title('DFT Magnitude Spectrum of Filtered Signal y[n]');
MATLAB Plot Generated: