在Matlab中编程实现:N=2^L的按时间抽取和频率抽取的的FFT算法。

2025-05-12 16:03:07
推荐回答(1个)
回答(1):

根据有限长序列离散傅里叶变换公式计算:

f1=50;   %10Hz
f2=100;  %100Hz

%抽样频率
Fs=1000; %100Hz

%抽样点数N
L=10;
N=2^L;

%抽样脉冲序列
n = 0:N-1;
t = n./Fs;

% f2 一个周期的采样数
M = floor(Fs/f2);

%被采样信号
x = cos(2*pi*f1.*t)+sin(2*pi*f2.*t);

%采样序列
subplot(311);
stem(t(1:2*M),x(1:2*M));
hold off;
%傅里叶变换
%根据有限长序列的离散傅里叶变换公式计算DFT
n = 0:N-1;
k = 0:N-1;
F = x * exp(-j*2*pi/N).^(n'*k);
subplot(312);
plot(n,abs(F));
subplot(313);
plot(k,angle(F));