# plotting the frequency spectrum

297 views (last 30 days)

Show older comments

Hi,

I am having trouble plotting the frequency spectrum of a sine wave. For this code, i expect the main frequency component to be centered around 1/(2*pi), but they are not. Is there something I am missing in my code?

x = [0:0.1:2*pi];

y = sin(x);

z = fft(y);

z = fftshift(z);

N = length(y);

f = [-N/2:N/2-1]/N;

plot(f,abs(z))

##### 0 Comments

### Accepted Answer

Rick Rosson
on 24 Apr 2012

Please try:

%%Time specifications:

Fs = 100; % samples per second

dt = 1/Fs; % seconds per sample

StopTime = 1; % seconds

t = (0:dt:StopTime-dt)';

N = size(t,1);

%%Sine wave:

Fc = 12; % hertz

x = cos(2*pi*Fc*t);

%%Fourier Transform:

X = fftshift(fft(x));

%%Frequency specifications:

dF = Fs/N; % hertz

f = -Fs/2:dF:Fs/2-dF; % hertz

%%Plot the spectrum:

figure;

plot(f,abs(X)/N);

xlabel('Frequency (in hertz)');

title('Magnitude Response');

HTH.

Rick

##### 6 Comments

Kyle Ohlschlager
on 17 Nov 2020

Anya Getman
on 9 Feb 2021

### More Answers (7)

kittipob techawudtipat
on 16 Apr 2016

i'm having trouble with this >> n = 1:2:5; >> x = -3.98*(sin((pi*n)/2))/(n*pi)+32*(sin((pi*n)/2))/((n.^3)*(pi.^3)*(10.^6)); >> y = 1.996 + x; >> plot(y(1:50)) Index exceeds matrix dimensions.

how can i solve this problem. the graph i order to plot dont happen thankyou bro

##### 0 Comments

Frantz Bouchereau
on 29 Jul 2021

There are various ways in which you can compute and plot true power spectrum or power spectral density in MATLAB (when I say 'true power spectrum' I mean that the output values correspond to actual power values).

1) If you want to compute the power spectrum without having to specify many parameters and want the function to choose the best parameters for you, you can use pspectrum. Calling the function without outputs will give you a plot with the computed power spectrum.

2) If you want to compute power spectrum or power spectral density and want full control over the window size, window overlap, window type, and number of FFT points, you can use the Welch periodogram pwelch function. Calling the function without outputs will give you a plot with the computed power spectrum.

3) If you want to just visualize the power spectrum, you can use the Signal Analyzer app. The app let's you visualize your signals simultaneously in the time, frequency, and time-frequency domains. You can zoom into signal regions of interest and analyze the spectra at those zoomed regions.

4) If you have split your signals into multiple signal frames you can use the Spectrum Analyzer scope.

Finally, here is a popular MATLAB doc page that explains the relationship between FFT and true power spectra: Power Spectral Density Estimates Using FFT.

##### 0 Comments

Dr. Seis
on 24 Apr 2012

Your "f" looks off. For your configuration (which uses fftshift):

N = length(y);

dt = x(2)-x(1); % Time increment

Nyq = 1/(2*dt); % Nyquist frequency

df = 1/(N*dt); % Frequency increment

if mod(N,2) == 0 % N is even

f = -Nyq : df : Nyq-df;

else % N is odd

f = [sort(-1*(df:df:Nyq)) (0:df:Nyq)];

end

##### 1 Comment

reddy
on 21 May 2015

Hi every one

could you please plot spectrum for the variables that are in EXCEL file which is attached.?

thanks.

Please provide me code also.

Phanindra

##### 0 Comments

Deepanshu Gupta
on 23 Nov 2017

I am trying to plot spectrum of wave for a string plucked halfway along it's length.I am not seeing any figure when I run it. c = 343; % speed of sound air% L = 1000; % string length% w0 = 200; % Displacement distance % Bn = 0; % string at rest, -ve part is zero% x = (0:L); % distance on L%

n = 2; %no. of modes%

fn = (n*c)/2*L;

omega = 2*pi*fn; %omega%

omegaN = n * omega; %w is displacement%

kn = w0/c; % wave no.%

t = 1/fn; %time%

An = ((8*w0)/n^2*pi^2)*sin((n*pi)/2); %incident wave part +ve%

W = sum((An*cos(omegaN*t) + Bn*sin(omegaN*t))*sin(kn*x)); %Displacement eq. sum n=1:10%

plot(W,t); title('hinged string') xlabel('displacement') ylabel('time')

##### 0 Comments

Khathutshelo Mudau
on 27 Sep 2020

Hy, can someone help me with determining or plotting the error spectrum of a sound signal

##### 0 Comments

Nermin Hamdan
on 24 Nov 2020

it is requested that 0 0 1 0 data be transmitted through a narrow communication channel. Using the MATLAB program, find the signal received at the receiver with the effect of the band-limited channel

First plot the submitted 0 0 1 0 data in time plane. Then find and plot the frequency spectrum. I do not have an idea what to do can you help me please

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!