In the fft example on MATLAB help, why do we multiply by 2?
29 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
David Cho
am 31 Okt. 2017
Kommentiert: Star Strider
am 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 Kommentare
kamrul islam sharek
am 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
Akzeptierte Antwort
Star Strider
am 31 Okt. 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 Kommentare
Weitere Antworten (1)
george veropoulos
am 9 Jul. 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
0 Kommentare
Siehe auch
Kategorien
Mehr zu Spectral Measurements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!