<< Chapter < Page | Chapter >> Page > |
In this lab, we will look at the Fourier series representation of periodic signals using MATLAB. In particular, we will study the truncated Fourier series reconstruction of a periodic function.
abs
, compute the complex magnitude.angle
, compute the phase angle.clear
, clears all variables.help<command>
, online help.whos
, list all variables and their sizes.We will see in exercise 3 that we can approximate a square wave with the Fourier series, but first let us approximate something more interesting, say a musical instrument? Many instruments produce very periodic waveforms.
sigsynth.m
to put your code in for this problem.trumpet.mat
from the
Sound Resources page. The sample rate,
Fs
, of the trumpet is 11,025 Hz. Play this sound with the
sound
command (remember to include the correct sample rate).Fs = 11025; % our sample rate is 11025 Hz
Y = fft(trumpet, 512); % take the fft of trumpetYmag = abs(Y); % take the mag of Y
f = Fs * (0:256)/512; % get a meaningful axisplot(f, Ymag(1:257)); % plot Ymag (only half the points are needed)
xlabel('Frequency (Hz)')ylabel('Magnitude')
You should now see a series of peaks (these are the harmonics of the instrument).addcosines.m
that takes in three vectors: time vector
t
, frequency vector
freq
, and magnitude vector
mag
. Have your new function use a for-loop to add together cosines, one for each frequency/magnitude pair in the
freq
and
mag
vectors. Remember to normalize your output vector after you add up all the cosines (the output should be between -1 and 1), like in the
Functions in MATLAB and the Groove Station lab. Use the data you collected from the frequency plot of the trumpet sound with your new function to sum cosines at the noted frequencies.mag(i)*cos(2*pi*freq(i)*t);
. Remember your time vector will have the form 0:1/Fs:time_in_seconds.
soundsc
will normalize the input before it plays the sound.t = 0:1/Fs:1; % one second time vector at 11025 Hz
freq = [100 150];
mag = [1 2];
synthwaves.tif
.sigsynth.m
addcosines.msynthwaves.tif
Notification Switch
Would you like to follow the 'Continuous time linear systems laboratory (ee 235)' conversation and receive update notifications?