FFT 傅里叶 推导

 

image

 

image

 

image

 

 

 

image

 

 

image

 

image

 

image

 

% 验证DFT公式:手动计算 vs MATLAB的fft
clear; clc;

% 1. 输入信号(随便取4个点)
x = [1, 2, 3, 4];
N = length(x);

% 2. 手动计算DFT(按照你给的公式)
X_manual = zeros(1, N);
for k = 0:N-1           % 每个频率
    sum_val = 0;
    for n = 0:N-1       % 每个时间点
        W = exp(-1j * 2*pi * n * k / N);  % W_N^(nk)
        sum_val = sum_val + x(n+1) * W;   % 累加
    end
    X_manual(k+1) = sum_val;
end

% 3. 用MATLAB自带的fft
X_matlab = fft(x);

% 4. 对比
disp('手动计算DFT结果:');
disp(X_manual);
disp('MATLAB fft结果:');
disp(X_matlab);
View Code

 

 

image

 

 

image

 

image

 

image

 

image

 

 

% 可视化:不同的k代表不同的振荡速度
clear; clc; close all;

N = 16;  % 16个点
n = 0:N-1;

figure('Position', [100,100,1200,800]);

for k = 0:4  % 看k=0,1,2,3,4
    % 探针的实部(余弦部分)
    probe_real = cos(2*pi*k*n/N);
    
    subplot(5,1,k+1);
    stem(n, probe_real, 'b', 'LineWidth', 1.5);
    hold on;
    plot(n, probe_real, 'r--', 'LineWidth', 1);
    ylim([-1.2, 1.2]);
    title(sprintf('k = %d:在%d个点内完成%d个完整周期', k, N, k));
    xlabel('时间序号 n'); ylabel('探针值');
    grid on;
end

 

image

 

image

 

 

image

 

image

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

image

 

image

 

image

 

 

image

 

image

 

image

 

image

 

 

image

 

image

 

image

 

 

【数字信号处理考研】基2-DIT-FFT基于时间抽取的快速傅里叶变换算法-推导及蝶形图画法_哔哩哔哩_bilibili

 

 

 

 

 

 


 

 

image

 

image

 

image

 

image

 

image

 

image

 

% 极简FFT示例:100Hz正弦波,采样率800Hz,8点FFT
clear; clc;

% 输入数据(和手算一样)
x = [1, 0.707, 0, -0.707, -1, -0.707, 0, 0.707];

% 做FFT
X = fft(x);

% 频率轴
fs = 800;
N = 8;
f = (0:N-1) * fs/N;

% 显示结果
disp('FFT输出(复数):');
disp(X);

% 归一化幅度谱
mag_normalized = abs(X) * 2 / N;
mag_normalized(1) = mag_normalized(1) / 2;  % 直流特殊处理

disp('归一化后的真实幅度:');
disp(mag_normalized);

% 绘图
figure;
subplot(2,1,1);
stem(f, mag_normalized, 'b', 'LineWidth', 2);
xlabel('频率 (Hz)'); ylabel('幅度');
title('幅度谱(归一化后)');
grid on;

subplot(2,1,2);
stem(f, angle(X)*180/pi, 'r', 'LineWidth', 2);
xlabel('频率 (Hz)'); ylabel('相位 (度)');
title('相位谱');
grid on;
View Code

image

 

image

 

image

 

posted on 2026-06-14 16:36  taylorrrrrrrrrr  阅读(3)  评论(0)    收藏  举报