Fs = 1000; % Sampling frequency
T = 1/Fs; % Sampling period
L0 = 1500; % Length
t = (0:L0)*T; % Time vector
L = length(t); % Length of signal
S = sin(2*pi*120*t); %signal
f = linspace(0,Fs,length(S))-Fs/2;
P = 2*abs(fftshift(fft(S/L)));
plot(f,P);
title('Double-Sided Amplitude Spectrum of S(t)');
xlabel('f (Hz)');
ylabel('|P1(f)|');
如上程序,信号S的幅度值为1,FFT变换后取模值得到的P的最大值也应当为1但是为什么是0.976122,比1小?如第一张图所示。
有人说是因为FFT变换时补0造成的,但是如果将第三行t = (0:L0)*T; 改成“t = (0:L0-1)*T; ”信号长度减1为什么反而FFT变换后的幅值就等于于1了?如第二张图所示