Problem
Description
Matlab(R) Source Code
Simulations
References
Copyright © 2005-2015.
No part of this manual may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information
storage or retrieval system, without prior permission from the publisher.
Notice of Liability
Every effort has been made to ensure that this manual contains accurate and current
information. However, Yankee Bush Software LLC and the author shall not be held liable
for any loss or damage suffered by readers as a result of any information contained herein.
This manual is for educational use only and not for commercial use.
Trademarks & Copyrights
All trademarks and copyrights are acknowledged as belonging to their respective owners.
Licensing Information
Source code and object code can be freely distributed to students by accredited colleges
and universities without requiring a license as long as there is no commercial application
involved. In other words, no license is required if you use this manual for educational use
only. You must obtain an Object Code Distribution license to embed code into a
commercial product. This is a license to put code into a product that is sold with the intent
to make a profit. There will be a license free for such situations. You must obtain a Source
Code Distribution License to distribute source code. Again there is a fee for such a license.
You can download shareware versions but you must obtain commercial licenses from the
manufacturers to use full versions of their software and/or hardware.
Problem Description
Matlab(R) Source Code
clc;
clear all;
% unit step function
u=ones(1000,1);
% input sequence
for n=1:1000
s(n)=0.4^n*(cos(pi*n/4)+sin(3*pi*n/4))*u(n);
end
% noise sequence
d=randn(1,1000);
%d2=randsrc(1,1000,[-1,1]);
x1=d+s;
%x2=d2+s;
% butterworth low pass filter design
[n,w]=buttord(0.3,0.4,4,60);
[b a]=butter(n,w);
y1=filter(b,a,x1);
%freqz(b,a);
for n=1:1000
xx(n)=((-1)^n)*s(n);
end xx2=xx+d;
%high pass filter design
[nh wh]=buttord(0.5,0.12,4,60);
[b a]=butter(nh,wh);
y2=filter(b,a,xx2);
%freqz(b,a);
% plotting of sequences s(n),y1(n),y2(n),d(n)
figure(1)
plot(s);
title('input sequence s(n)');
xlabel('length of sequence');
ylabel('magnitude');
hold on;
figure(2)
plot(d);
title('noise sequence');
xlabel('length of sequence');
ylabel('magnitude');
hold on;
figure(3) plot(y1)
title('low pass filtered output sequence y1(n)');
xlabel('length of sequence');
ylabel('magnitude');
hold on;
figure(4)
plot(y2)
title('high pass filtered sequence y2(n)');
xlabel('length of sequence');
ylabel('magnitude');
hold on;
% calculation of 1024 point dft of sequences s(n),y1(n),y2(n),d(n) and
% plotting of magnitude and phase plot of dft sequences
% input sequence sk=fft(s,1024);
pss= sk.*conj(sk)/1024; f = 1000*(0:512)/1024;
figure(5)
plot(f,pss(1:513))
title('Frequency content of s')
xlabel('frequency (Hz)')
hold on;
psk = unwrap(angle(sk));
f1 = (0:length(sk)-1)'/length(sk)*1000;
figure(6)
plot(f1,psk)
title('phase plot s')
ylabel('phase (radian)')
hold on;
% noise sequence
dk=fft(d,1024);
dss=dk.*conj(dk)/1024;
figure(7)
plot(f,dss(1:513))
title('Frequency content of d')
xlabel('frequency (Hz)')
hold on;
dsk = unwrap(angle(dk));
f1 = (0:length(dk)-1)'/length(dk)*1000;
figure(71)
plot(f1,dsk)
title('phase plot d')
ylabel('phase (radian)')
hold on;
% low pass filtered output
y1(n) y1k=fft(y1,1024);
Py1 = y1k.* conj(y1k) / 1024;
p = unwrap(angle(y1k));
f = 1000*(0:512)/1024;
figure(8)
plot(f,Py1(1:513))
title('Frequency content of y1')
xlabel('frequency (Hz)')
hold on;
f1 = (0:length(y1k)-1)'/length(y1k)*1000;
figure(9)
plot(f1,p)
title('phase plot y1')
ylabel('phase (radian)')
hold on;
% high pass filtered output
y2k=fft(y2,1024);
Py2 = y2k.* conj(y2k) / 1024;
p2 = unwrap(angle(y2k));
f = 1000*(0:512)/1024;
figure(10)
plot(f,Py2(1:513))
title('Frequency content of y2')
xlabel('frequency (Hz)')
hold on;
f1 = (0:length(y2k)-1)'/length(y2k)*1000;
figure(11)
plot(f1,p2)
title('phase plot y2')
ylabel('phase (radian)')
xlabel('frequency(Hz)');
hold on;
hold off;
Simulations
References
A. V. Oppenheim, R. W. Schafer with J. R. Buck, “Discrete-Time Signal Processing,”
Second Ed., Prentice Hall Signal Processing Series, 1999. Pages 1- 870
J. G. Proakis and D. G. Manolakis, “Digital Signal Processing Principles, Algorithms, and
Applications,“ Third Ed., Prentice Hall, 1996. Pages 1-1016
S. K. Mitra, “ Digital Signal Processing – A Computer-Based Approach,“ Second Ed.,
McGraw Hill 2001 (comes with Digital Signal Processing Using MatlabR, Prentice Hall,
1999) Pages 1-354
R. A. Haddad and T. W. Parsons, “Digital Signal Processing – Theory, Applications, and
Hardware,“ Computer Science Press, 1991. Pages 1-636
Joyce Van de Vegte, “ Fundamentals of Digital Signal Processing,“ Prentice Hall 2002.
Pages 1-810
N. Dahnoun, “Digital Signal Processing Implementation using the TMS320C6000TM
DSP Platform,“ First Ed., Prentice Hall 2000. Pages 1-234
A. V. Oppenheim, R. W. Schafer, “Digital Signal Processing,“ First Edition, Prentice Hall,
1975. Pages 1-784
Hykin, “Adaptive Filter Theory”, Prentice Hall, Fourth Edition, 2001, Pages 1-936