Explore BrainMass
Share

# Matlab Program Example Problem

This content was COPIED from BrainMass.com - View the original, and get the already-completed solution here!

Problem Statement:

1) Prompt a user to enter a .wav filename where the DTMF tones are stored. Load the recorded tones. Use the .wav file provided called project5.wav. (NOTE: this file is on my computer and is not presented.), but the file contains simulated tones for the numbers 24680 which where generated using a previous program which is not important.
2) Plot the signal representing the tones versus time.
3) Use the command ginput to determine the number of tones and set break points to separate the individual tones.
4) Use Matlab's fft function to calculate the magnitude spectrum for each digit.
5) Plot the signals for each digit and their magnitude spectrum. Arrange the graphs so that each page (figure window) contains six graphs labeled. A signal and its magnitude must be displayed next to each other(1st pane has a signal and 2nd pane has its spectrum)

THE code I have that may help:

clear,clc,close all;
filename=input('Enter wavfilname, project5.wav','S');
%>>project5.wav
fs=4000; %sampling freq
dt=1/fs; %time step
fo=1000; % signal frequency
T=1/fo;
t=[0:dt:200*T-dt]
x=sin2*pi*10*t
plot(t,x)
(x,y)=ginput(6) % 6 means 6 mouse clicks only to work on plot
%then on command window see x= a number
a number, etc.
y= a number
a number etc.
% only want x axis, so ignore y axis and to do so...
index1=round(1)/dt
f=g(1:index1);
f1=t(1:index)
plot(t,f)

OK, other code have to use the fft function to find the amplitude spectrum of a sinusoid. Here it is:
clear, clc, close all;
fs=4000;
dt=1/fs;
fo=1000;
T=1/fo;
t=[0:dt:200*T-dt];
x=sin(2*pi*fo*t);
N=length(x);
XF=fft(x)/N;
XFM=abs(fftshift(XF));
freq=[-N/2:N/2-1]*fs/N;
plot(freq,XFM)
figure
stem(freq,XFM) % to get rid of extra little side spectrum's due to the way Matlab uses math to calculate a spectrum...