In the fft example on MATLAB help, why do we multiply by 2?

28 vues (au cours des 30 derniers jours)
David Cho
David Cho le 31 Oct 2017
Commenté : Star Strider le 20 Sep 2019
Hi, I found the following 'fft' example on MATLAB help (https://nl.mathworks.com/help/matlab/ref/fft.html)
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sampling period
L = 1500; % Length of signal
t = (0:L-1)*T; % Time vector
X = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
Y = fft(X);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1); % don't know why we have to mutiply by 2 and why the range is from 2 to (end-1)
f = Fs*(0:(L/2))/L;
plot(f,P1)
My question lies in the line #9: P1(2:end-1) = 2*P1(2:end-1); I do not understand why we have to mutiply by 2 and why the range is from 2 to (end-1).
I shall be obliged if anyone could help on this question.
Thank you.
  2 commentaires
kamrul islam sharek
kamrul islam sharek le 20 Sep 2019
a=imread('grey.jpg');
g=fspecial('gaussian',256,10);
max(g(:))
gi=mat2gray(g);
max(g1(:));
af=fftshift(fft2(a));
agi= a.*gi;
fftshow(ag1)
ag1i=ifft2(ag1);
fftshow(ag1i)
my problem is line no 7.plewase help to getting out this problem
Star Strider
Star Strider le 20 Sep 2019
Post this as a new Question, not here. Include the image.

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 31 Oct 2017
The Fourier transform (link) by definition is two-sided, symmetrical about 0, with frequencies going from -Inf to +Inf. (In practice, the frequency content is limited by the signal length.) The energy at each frequency is represented equally on both the positive and negative halves of the spectrum at one-half the original signal energy (so the total energy remains the same).
Taking the one-sided Fourier transform, as done here, then requires that the amplitude of half the spectrum be multiplied by 2 in order to represent the signal amplitude accurately.
  4 commentaires
David Cho
David Cho le 31 Oct 2017
Thank you very much for your kind answer! It helped me a lot to understand the MATLAB 'fft' command more.
Star Strider
Star Strider le 31 Oct 2017
As always, my pleasure!

Connectez-vous pour commenter.

Plus de réponses (1)

george veropoulos
george veropoulos le 9 Juil 2018
Hi.. i have an other question the the quantity P2 = abs(Y/L) must multiply by Ts... i make a code to compare the FFt RESULTS with fourier transform
N=128; t=linspace(0,3,N); f=2*exp(-3*t); Ts=t(2)-t(1); Ws=2*pi/Ts; F=fft(f); Fp=F(1:N/2+1)*Ts;
W=Ws*(0:N/2)/N; Fa=2./(3+j*W);
plot(W/(2*pi),abs(Fa),'--',W/(2*pi),abs(Fp),'-'); xlabel('Frequency, Hz'), ylabel('|F(f)|');
legend('analytical','numerical')
when myltiply by Ts the resluts are same...
thank you George

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by