Purchase Solution

Matlab Program Revisions

Not what you're looking for?

Ask Custom Question

Here is the program I tweaked, but I seriously need you to comment every line including and below this code piece (index=round(x*fs); ) what each line does and how it works. The more explanation the better. I do not understand how the index works, everything. I need step by step how all the numbers flow so to say from variable to variable like a flow chart. Finally, the code below for the five plots was great, but can you make a for loop or something to plot nth plots. Notice the input used to be 6 for 6 clicks of the mouse, now it is () to signify infinite clicks of the mouse, so need a for loop instead of plotting one at a time for t1,t2.....

CODE BELOW:

%Gregory Leist/Dr. Saed/Project 5 takes a wav file Dr. Saed created for

%tones, read file and plot the file. Use ginput to take 6 data points.

%Plot waveforms.

clear,clc,close all;

%get project5.wav file from moodle, right click, save and drag to m file

%directory used in matlab so matlab can find it.

filename=input('Enter wavfilname: "project5.wav" > ','s');

%enter at prompt>> project5.wav

%-------------------------------------------------------------------------

[wav,fs]=wavread(filename);

t=(0:length(wav)-1)/fs;

plot(t,wav);

[x,y]=ginput(); % 6 means 6 mouse clicks only to work on plot

%Be sure to click on 6 different places on plot

%cause if plot on same waveform("square wave")

%twice the final plots are messed up.

%-------------------------------------------------------------------------

%then on command window see x = a number

% a number, etc.

% y = a number

% a number etc.

%but actually do not cause added a ";" to code to

%supress all the numbers being placed on the

%command window.

%only want x axis, so ignore y axis and to do so..

%--------------------------------------------------------------------------

index=round(x*fs);

figure; %so plots will not override

t1=t(index(1):index(2)-1);

sig1=wav(index(1):index(2)-1); %wav is variable for x plot values

N=length(t1); %take clicked portion length

fft1=abs(fftshift(fft(sig1)))/N; %get spectrum

freq1=[-N/2:N/2-1]'*fs/N;

t2=t(index(2):index(3)-1);

sig2=wav(index(2):index(3)-1);

subplot(5,2,2);plot(sig2);

N=length(t2);

fft2=abs(fftshift(fft(sig2)))/N;

freq2=[-N/2:N/2-1]'*fs/N;

t3=t(index(3):index(4)-1);

sig3=wav(index(3):index(4)-1);

subplot(5,2,3);

plot(sig3);

N=length(t3);

fft3=abs(fftshift(fft(sig3)))/N;

freq3=[-N/2:N/2-1]'*fs/N;

t4=t(index(4):index(5)-1);

sig4=wav(index(4):index(5)-1);

subplot(5,2,4);

plot(sig4);

N=length(t4);

fft4=abs(fftshift(fft(sig4)))/N;

freq4=[-N/2:N/2-1]'*fs/N;

t5=t(index(5):index(6));

sig5=wav(index(5):index(6));

subplot(5,2,5);

plot(sig5);

N=length(t5);

fft5=abs(fftshift(fft(sig5)))/N;

freq5=[-N/2:N/2-1]'*fs/N;

subplot(5,2,1);plot(t1,sig1);

subplot(5,2,2);plot(freq1,fft1);

subplot(5,2,3);plot(t2,sig2);

subplot(5,2,4);plot(freq2,fft2);

subplot(5,2,5);plot(t3,sig3);

subplot(5,2,6);plot(freq3,fft3);

subplot(5,2,7);plot(t4,sig4);

subplot(5,2,8);plot(freq4,fft4);

subplot(5,2,9);plot(t5,sig5);

subplot(5,2,10);plot(freq5,fft5);

Purchase this Solution

Solution Summary

The expert examines MATLAB program revisions. A plot of the waveforms are determined.

Solution Preview

%Gregory Leist/Dr. Saed/Project 5 takes a wav file Dr. Saed created for

%tones, read file and plot the file. Use ginput to take 6 data points.

%Plot waveforms.

clear,clc,close all;

%get project5.wav file from moodle, right click, save and drag to m file

%directory used in matlab so matlab can find it.

filename=input('Enter wavfilname: "project5.wav" > ','s');

%enter at prompt>> project5.wav

%-------------------------------------------------------------------------

[wav,fs]=wavread(filename);

t=(0:length(wav)-1)/fs;

plot(t,wav);

[x,y]=ginput(); % 6 means 6 mouse clicks only to work on plot

%Be sure to click on 6 different places on plot

%cause if plot on same waveform("square wave")

%twice the final plots are messed up.

%-------------------------------------------------------------------------

%then on command window see x = a number

% a number, etc.

% y = a number

% a number etc.

%but actually do not cause added a ";" to code to

%supress all the numbers being placed on the

%command window.

%only want x axis, so ignore y axis and to do so..

%--------------------------------------------------------------------------

index=round(x*fs);

figure; %creates a new figure window

t1=t(index(1):index(2)-1); % elements from t[index(1)] to t[index(2)-1] are saved in array ...

Purchase this Solution


Free BrainMass Quizzes
Word 2010: Tables

Have you never worked with Tables in Word 2010? Maybe it has been a while since you have used a Table in Word and you need to brush up on your skills. Several keywords and popular options are discussed as you go through this quiz.

Word 2010: Table of Contents

Ever wondered where a Table of Contents in a Word document comes from? Maybe you need a refresher on the topic? This quiz will remind you of the keywords and options used when working with a T.O.C. in Word 2010.

Basic Computer Terms

We use many basic terms like bit, pixel in our usual conversations about computers. Are we aware of what these mean? This little quiz is an attempt towards discovering that.

Inserting and deleting in a linked list

This quiz tests your understanding of how to insert and delete elements in a linked list. Understanding of the use of linked lists, and the related performance aspects, is an important fundamental skill of computer science data structures.

Javscript Basics

Quiz on basics of javascript programming language.