对一个叠加输入的正弦信号处理,采样点数分别设置成1000和1024,用FFT处理N点采样的信号,把频率和对应幅值分离出来。N=1000都准,N=1024时频率和幅度都有误差,不清楚为什么,求解答。程序放最后。

% 定义时间范围和采样频率
Fs = 200*10^3; Ts = 1/Fs; N = 1000; t =(0:N-1)*Ts;
% 生成叠加正弦波
wav = 0.514 * sin(2*pi*16*10^3*t) + 1.14 *sin(2*pi*25*10^3*t);
plot(t, wav)
% 计算FFT
Y = fft(wav);
%画图
y = fft(wav) / (N/2);
f = (0:length(y)-1)*Fs/length(y);
plot(f/10^3,abs(y))
xlabel('频率 (kHz)')
ylabel('幅度')
title(['FFT结果' ' (N=' num2str(N)')'] )


% 定义时间范围和采样频率
Fs = 200*10^3; Ts = 1/Fs; N = 1000; t =(0:N-1)*Ts;
% 生成叠加正弦波
wav = 0.514 * sin(2*pi*16*10^3*t) + 1.14 *sin(2*pi*25*10^3*t);
plot(t, wav)
% 计算FFT
Y = fft(wav);
%画图
y = fft(wav) / (N/2);
f = (0:length(y)-1)*Fs/length(y);
plot(f/10^3,abs(y))
xlabel('频率 (kHz)')
ylabel('幅度')
title(['FFT结果' ' (N=' num2str(N)')'] )
                    
