一、FFT原理(蝶形运算)




二、Matlab实现
%信号频率
f = 50;
%采样频率
fs = 400;
%信号点数
N = 8;
n = 0:1:N-1;
% 生成正弦信号的实部
% x_re=cos((pi/4)n-pi/4);
x_re=cos(2*pi*f/fs*(n-1));
% 定义正弦信号的虚部
x_im = 0;
% 将实部和虚部组合成复数信号
x = x_re + 1i * x_im;
% 计算信号的 FFT
X = fft(x);
% 图 1: 绘制原离散信号
figure;
stem(n, real(x), 'filled');
title('原始离散信号');
xlabel('离散点数');
ylabel('x[n]');
% 图 2: 绘制 FFT 的幅频特性和相频特性
figure;
stem(abs(X),'filled');
title('FFT幅度图');
xlabel('离散点数');
ylabel('幅度');
figure;
subplot(2,1,1);
%转换到频率
f_axis=n*fs/N;
stem(f_axis,abs(X),'filled');
title('FFT幅度图');
xlabel('频率(Hz)');
ylabel('幅度');
%相频特性
subplot(2,1,2);
X_phase_rad = angle(X);
X_phase_deg = X_phase_rad *(180/pi);
% 将幅度为零的点的相位设置为0
X_phase_deg(abs(X) < 1e-10) = 0;
stem(f_axis,X_phase_deg,'filled');
title('FFT相位图');
xlabel('频率(Hz)');
ylabel('相位');
三、输出结果


