<< Chapter < Page Chapter >> Page >
Fourier series, sums of cosines. This development of these labs was supported by the National ScienceFoundation under Grant No. DUE-0511635. Any opinions, conclusions or recommendations expressed in this material are those of the authors and donot necessarily reflect the views of the National Science Foundation.

Introduction

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.

Some useful matlab commands

  • 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.

Signal synthesis

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.

Synthesizer

  • Create a script file called sigsynth.m to put your code in for this problem.
  • Download the trumpet sound sample 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).
  • Plot only a small section of the trumpet sound to show three or so periods (try 100 samples or so). Does it looks the same at any time in the sound?
  • View the frequency spectrum of this sound by entering the following commands, 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).
  • We will synthesize the instrument using only the peak information. You can use the "data cursor" tool in MATLAB's figure window to easily read graph data. Write down the frequency and its strength (magnitude) for five to ten of the strongest peaks.
  • Create a function called 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.
  • Here are some hints for the above. Use a for-loop to create a cosine at each frequency in the freq vector. Your cosine function should look something like this, mag(i)*cos(2*pi*freq(i)*t); . Remember your time vector will have the form 0:1/Fs:time_in_seconds.
    The command soundsc will normalize the input before it plays the sound.
    For example, if you had two harmonics, one at 100 Hz with magnitude 1 and another at 150 Hz with magnitude 2, then your vectors will be, t = 0:1/Fs:1; % one second time vector at 11025 Hz freq = [100 150]; mag = [1 2];
  • Play trumpet and your new synthesized sound. Do they sound the same? Use subplot to plot a small section of your new synthesized sound along with the trumpet sound, does it look the same? Save your plot as synthwaves.tif .
  • Try synthesizing the sound with fewer frequencies, then try more frequencies. How does this affect the sound of our synthesized trumpet?
  • You will need to show the TA the following files: sigsynth.m addcosines.msynthwaves.tif

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Continuous time linear systems laboratory (ee 235). OpenStax CNX. Sep 28, 2007 Download for free at http://cnx.org/content/col10374/1.8
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Continuous time linear systems laboratory (ee 235)' conversation and receive update notifications?

Ask