Purchase Solution

MATLAB program loop

Not what you're looking for?

Ask Custom Question

Please type something up step by step how this program work, maybe some pictures if possible showing how the code changes. The comments are good, but does not explain how the code really works....Like you type project5.wav on command window, it is assigned to filename, then the next line ... pictures or a number table or something to see how this works. I am lost. For reference, project5.wav was a file that had a plot for numbers say 5,6,7,8,9 converted into a dialtone signal. This program takes that plot, using ginput function you click on the waveforem and the program separates it into an x component and an fs component....I think. Then you plot the signl versus the spectrum

Problem, I asked for help with implementing a for loop and got help using a switch statement. I need a for loop so when you say do 8 clicks, 10 clicks, to infinity if want the program will plot all 8 clicks, 10 clicks, etc. I need the for loop for the plot and sublot sections to take the number of clicks, any number, and then the program using the for loop generate the number of signal and spectrum plots for each click. I am bad a t for loop especially when you have to plot something over and over from 0 to nth terms. Here is the program. Also, each signal t1,t2,etc. is calculated up to t5. The original program only asked for 6 clicks. Now need the program for nth clicks as said. So this area will need to be in a for loop too so when ginput function sees say 20 clicks then the for loop says do 1 to 20 signals and plot them, but can only have 5 pairs of plots(signal, spectrum) per page so total 10 plots per page.
_________________________________________________________________

%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 't1'

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

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

%FFT(sig1) is the discrete Fourier transform (DFT) of vector sig1
% fftshift(fft(sig1)) Shift zero-frequency component to center of
% spectrum 'fft(sig1)'
%abs(fftshift(fft(sig1))) is absolute value of 'fftshift(fft(sig1))'
fft1=abs(fftshift(fft(sig1)))/N; %get spectrum

% scaller multiplication of fs/N by the vector [-N/2, (-N/2+1), ... , -1,
% 0, 1, ..., (N/2-1), N/2]
freq1=[-N/2:N/2-1]'*fs/N;

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

%elements from wav[index(2)] to wav[index(3)-1] are saved in array 'sig2'
sig2=wav(index(2):index(3)-1);

%opens a plot matrix of 5 by 2 and puts in place 2; and plots sig2
subplot(5,2,2);plot(sig2);

%finds lenght of t2
N=length(t2);

%FFT(sig2) is the discrete Fourier transform (DFT) of vector sig2
% fftshift(fft(sig2)) Shift zero-frequency component to center of
% spectrum 'fft(sig2)'
%abs(fftshift(fft(sig2))) is absolute value of 'fftshift(fft(sig2))'

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

% scaller multiplication of fs/N by the vectore [-N/2, (-N/2+1), ... , -1,
% 0, 1, ..., (N/2-1), N/2]
freq2=[-N/2:N/2-1]'*fs/N;

%elements from t[index(3)] to t[index(4)-1] are saved in array 't3'
t3=t(index(3):index(4)-1);

%elements from wav[index(3)] to wav[index(4)-1] are saved in array 'sig3'
sig3=wav(index(3):index(4)-1);

%in place 3 of plot matrix of 5 by 2 plots sig3
subplot(5,2,3);

plot(sig3);

%finds the lenght of t3
N=length(t3);

%FFT(sig3) is the discrete Fourier transform (DFT) of vector sig3
% fftshift(fft(sig3)) Shift zero-frequency component to center of
% spectrum 'fft(sig3)'
%abs(fftshift(fft(sig3))) is absolute value of 'fftshift(fft(sig3))'
fft3=abs(fftshift(fft(sig3)))/N;

% scaller multiplication of fs/N by the vectore [-N/2, (-N/2+1), ... , -1,
% 0, 1, ..., (N/2-1), N/2]
freq3=[-N/2:N/2-1]'*fs/N;

%elements from t[index(4)] to t[index(5)-1] are saved in array 't4'
t4=t(index(4):index(5)-1);

%elements from wav[index(4)] to wav[index(5)-1] are saved in array 'sig4'
sig4=wav(index(4):index(5)-1);

%in place 4 of plot matrix of 5 by 2 plots sig4
subplot(5,2,4);

plot(sig4);

%finds the lenght of t4
N=length(t4);

%FFT(sig4) is the discrete Fourier transform (DFT) of vector sig3
% fftshift(fft(sig4)) Shift zero-frequency component to center of
% spectrum 'fft(sig4)'
%abs(fftshift(fft(sig4))) is absolute value of 'fftshift(fft(sig4))'
fft4=abs(fftshift(fft(sig4)))/N;

% scaller multiplication of fs/N by the vectore [-N/2, (-N/2+1), ... , -1,
% 0, 1, ..., (N/2-1), N/2]
freq4=[-N/2:N/2-1]'*fs/N;

%elements from t[index(5)] to t[index(6)-1] are saved in array 't5'
t5=t(index(5):index(6));

%elements from wav[index(5)] to wav[index(6)-1] are saved in array 'sig5'
sig5=wav(index(5):index(6));

%in place 4 of plot matrix of 5 by 2 plots sig5
subplot(5,2,5);
plot(sig5);

%finds the lenght of t5
N=length(t5);

%FFT(sig5) is the discrete Fourier transform (DFT) of vector sig5
% fftshift(fft(sig5)) Shift zero-frequency component to center of
% spectrum 'fft(sig5)'
%abs(fftshift(fft(sig5))) is absolute value of 'fftshift(fft(sig5))'
fft5=abs(fftshift(fft(sig5)))/N;

% scaller multiplication of fs/N by the vectore [-N/2, (-N/2+1), ... , -1,
% 0, 1, ..., (N/2-1), N/2]
freq5=[-N/2:N/2-1]'*fs/N;

no = INPUT('Enter the i for ith plot(1 < i < 10)','s') ;
no=str2num(no);

switch no
case 1,
subplot(5,2,1);plot(t1,sig1);
subplot(5,2,2);plot(freq1,fft1);
case 2,
subplot(5,2,3);plot(t2,sig2);
subplot(5,2,4);plot(freq2,fft2);
case 3,
subplot(5,2,5);plot(t3,sig3);
subplot(5,2,6);plot(freq3,fft3);
case 4,
subplot(5,2,7);plot(t4,sig4);
subplot(5,2,8);plot(freq4,fft4);
case 5,
subplot(5,2,9);plot(t5,sig5);
subplot(5,2,10);plot(freq5,fft5);
end

Purchase this Solution

Solution Summary

The expert examines a MATLAB program loop. The plots waveforms are determined.

Purchase this Solution


Free BrainMass Quizzes
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.

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.

Excel Introductory Quiz

This quiz tests your knowledge of basics of MS-Excel.

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.