7 views (last 30 days)

Show older comments

Here is my plot, but I don't know why the right plot is shifted after using FFTshift function, how can I solve this problem?

fs = 250;

t = (0:1/fs:(0.1-.5/fs)); % [0, 0.1)

g = sin(2*pi*50*t)+0.3;

plot(t, g,'-o'),

title('g(t) = sin(2 * pi * 50 * t)+0.3' );

xlabel('time/s');

ylabel('g(t) ');

grid on

n = length(g);

L = 25;

Y = fft(g);

f = fs*(0:L-1)/L;

G = fftshift(Y);

fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range

powershift = abs(G).^2/n; % zero-centered power

figure

plot(fshift,powershift,'-o') % zero-centered plot which have shifts

grid on

figure

plot(f, abs(Y),'-o'), % correct frequency plot

xlabel 'Frequency (Hz)';

ylabel 'Magnitude';

title('Magnitude Plot');

grid on

Ashutosh Singh Baghel
on 18 Oct 2021

Hi Yian,

I understand your curves and data values are true, yet the plot is shifted left by "-5". Please try to update the starting and final value of 'fshift' to,

fs = 250;

t = (0:1/fs:(0.1-.5/fs)); % [0, 0.1)

g = sin(2*pi*50*t)+0.3;

n = length(g);

L = 25;

Y = fft(g);

f = fs*(0:L-1)/L;

G1 = abs(Y);

G = fftshift(Y);

fshift = (-(n+1)/2+1:(n)/2)*(fs/n) % zero-centered frequency range

powershift = abs(G).^2/n; % zero-centered power

figure

plot(fshift(1:end),powershift(1:end),'-o');% zero-centered plot which have shifts

grid on

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

Start Hunting!