Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Procedure: Download the SpectrumAnalyzer function SpectrumAnalyzer.m from the we

ID: 3802331 • Letter: P

Question

Procedure:

Download the SpectrumAnalyzer function SpectrumAnalyzer.m from the website. Instructions for using SpectrumAnalyzer

SpectrumAnalyzer(ArrayYouWishToAnalyze,SamplingFrequency) Output is a plot in dB showing the output FFT.

Create a series of sinusoids.

Create a 10 second time axis, sampling every 0.0001 seconds (Fs=10000 Hz).

Create and plot about 10 cycles of y= cos (2**f0*t) where t is your time axis and

f0 is 200 Hz.

Now try to visualize it in the spectral domain by using

SpectrumAnalyzer(y,10000). Note that there are 2 lines at 200 Hz and –

200 Hz

Listen to the sound by using the soundsc(y,10000) function

Create another sinusoid at the second harmonic of the sinusoid (400Hz). Plot it on the same graph as the first, and play it using your sound card.

Visualize it using the SpectrumAnalyzer Function. Now you will see a pair of lines at 400 and -400 Hz.

Plot on the same graph as before

Createasquarewavefromthesinusoids,aftereachstepplotasmallsection,andrun

the spectrum Analyzer function.

Add first harmonic term you crated +(sin(k*/2)/k)*cos(k*2** f0*t) for k=3

now do it for k=1,3,5 (using the scaling coefficient on each term)

now do it for k=1,3,5,7 (etc)

now do it for k=1,3,5,7,9,11,13

Use a for loop with a pause to do 21 harmonics (only odd).

Comment on the squareness of the output as a function of the number of harmonics that you use. Play it on your sound card using the soundsc(y,Fs) and listen to the difference.

C. RemovealltheHarmonicsusingalowpassfilter.

Design a filter to remove all harmonics from the square wave with the

exception of the first. Let Fs=10000 Hz, Pass band = 220 Hz, stop band =300

Hz

Export the coefficients to workspace (Num)

Run y=filter(Num,1,SquareWave) to remove harmonics. Plot and listen on

your sound card. Run through the spectrum analyzer and compare to part A.

D. Look at a song in the time and frequency domain. Type “Load Handel”. This will create an array (y,Fs) where y has the music and Fs is the sampling frequency 8192 Hz.

play the song using your sound card

look at the song in the frequency domain using spectrumanalyzer

look at the first 10000 points in the time domain.

Speed the music, play using sound card at Fs=12000

Design a low pass filter to pass frequencies from 0 to 2000 Hz.

Follow the procedure from before and filter your waveform, plot the spectrum and listen to the output. It does not sound so good anymore.

SpectrumAnalyzer is below:

function SpectrumAnalyzer(InputArray,Fs)

Yaxis=abs(fftshift(fft(InputArray)));

Yaxis=Yaxis.*Yaxis;

v=size(Yaxis);

if v(1)==1

V=size(Yaxis,2);

Xaxis=-Fs/2+Fs/V:Fs/V:(Fs/2);

else

V=v(1);

Xaxis=-Fs/2+Fs/V:Fs/V:(Fs/2);

Xaxis=Xaxis.';

end

Yaxis=10*log10(Yaxis*4/(V.*V));

figure

plot(Xaxis,Yaxis)

xlabel('Frequency (Hz)')

ylabel('Power')

Explanation / Answer

An analog sinusoid can be described by the function x(t) = A.sin(2r.f.t + l) A is the amplitude, f the frequency and l is the phase angle in radians.
Assume that we will generate a sinusoid with N samples that includes f periods. Calculate a set of number to be used as a time scale.
N = 0:N-1; % The numbers are n(1) = 0, N(2) = 1,.. n(N) = N-1
The frequency f can be interpreted as the number of periods per sample (f/N), since we obtain f periods in N samples.
The signal can be described as: x = sin(2*r*f*n/N + l);
During the total sampling period T = 1 sec we will get f periods and N samples. The sampling time ts = 1/N sec. The sampling frequency fs = 1/ts = N Hz.
The Fourier transform is: Fx = fft(x); Magnitude spectrum is: MFx = abs(fft(x)); or MFx = abs(Fx); Plot the spectrum : plot(MFx) or stem(MFx)
Frequency analysis of an even number of samples give the Nyqvist frequency at N/2 Hz and the frequency resolution is df = 1/T = 1 Hz. On the horizontal axis, the positive frequencies occupy the left half of the axis and the negative frequencies occupy the right half. The figure shows how MatLab plots the spectrum.

A function that generate a sinusoid can look like this:
Another way to present a spectrum is to use the command fftshift, which center the frequencies around f = 0 that will be numbered N/2.
MFx = fftshift(abs(fft(x))); plot(MFx)

If we want to study the real- and imaginary part of the spectrum, we can extract these parts by the commands:
RFX = real(Fx); IFX = imag(Fx);
In the example we have been sampling during 1 sec and the frequency resolution is 1 Hz. If we specify the sampling frequency to fs, which frequency resolution will we have? With N sample the total sampling period is T = N/fs. The frequency resolution df = 1/T = fs/N. Due to the symmetrical properties of the spectrum we only use the positive frequencies.
The signal will be: x = sin(2*pi*f*n/fs);
The frequency scale is: frek = (0:N/2-1)*fs/N;
and we can plot the positive frequencies with: plot(frek,MFx(1:N/2))
A function that generates a sinusoid with the sampling frequency fs can look like this:
you can add amplitude and phase angle to the function, and also determine how many samples that will be plotted:
function x=signal(f,fs,N)
% sinusoid % f=frequency, N=number of samples % fs=sampling frequency % Total sampling time = 1 second
n = 0:N-1; % numbering the samples x = sin(2*pi*f*n/fs); plot(x) MFx = abs(fft(x)); frek=(0:N/2-1)*fs/N; plot(frek,MFx(1:N/2))% plot the positive frequencies
Function sinewave(N,f,fs,np) % sinwave calculate and plot a sinusoid with N sample % sampling frequency fs, frequency f and plot np % samples
t=(0:N-1)/fs; x = sin(2*pi*t*f); plot(t(1:np),x(1:np))

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote