FFT:快速傅里叶变换--DFT快速模式

DFT:离散傅里叶变换

DCT:离散余弦变换

一、介绍

快速傅里叶变换 (fast Fourier transform), 即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,简称FFT。

  离散傅里叶变换DFT公式:

  离散余弦变换DCT公式:

二、公式推导

参考:快速傅里叶变换(FFT)的推导过程(DIT)__hxh的博客-CSDN博客_快速傅里叶变换推导

三、FFT应用

参考:快速傅里叶变换 - MATLAB fft- MathWorks 中国

1、构造一个信号

Fs = 1000;            % Sampling frequency
T = 1/Fs;             % Sampling period
L = 1500;             % Length of signal
t = (0:L-1)*T;        % Time vector,1.5 s
% 构造一个信号,包含幅值为0.7的50Hz正弦量和幅值为1的120Hz正弦量
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);  % 周期T = 100ms
figure; plot(1000*t(1:200), S(1:200))      % 画2个周期
title('Signal without Noise')
xlabel('t (milliseconds)'); ylabel('X(t)');

2、构造带有噪声的信号

X = S + 2*randn(size(t));             % 用均值为0方差为4的白噪声扰乱该信号
figure; plot(1000*t(1:200), X(1:200))  % 在时域中绘制含噪信号
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('t (milliseconds)'); ylabel('X(t)');

3、带有噪声信号的FFT

Y = fft(X);        % 计算信号的傅里叶变换
P2 = abs(Y/L);     % 计算双侧频谱P2 对称的
P1 = P2(1:L/2+1);  % 单侧频谱P1
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;  % 定义频域f
figure; plot(f, P1)  % 绘制单侧幅值频谱P1
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)'); ylabel('|P1(f)|');

4、不带噪声信号的FFT

Y = fft(S);        % 采用原始未破坏的信号做傅里叶变换
P2 = abs(Y/L);     % 计算双侧频谱P2  对称的
P1 = P2(1:L/2+1);  % 单侧频谱P1
P1(2:end-1) = 2*P1(2:end-1);
figure; plot(f, P1)
title('Single-Sided Amplitude Spectrum of S(t)')
xlabel('f (Hz)'); ylabel('|P1(f)|');

四、DCT应用

DCT可以用于数据压缩。

clear all
clc
% 利用DCT做数据压缩
x = (1:100) + 50*cos((1:100)*2*pi/40);
X = dct(x);
[XX, ind] = sort(abs(X), 'descend');
i = 1;
while norm(X(ind(1:i))) / norm(X) < 0.99i = i + 1;
end
Needed = i;
X(ind(Needed+1:end)) = 0;
xx = idct(X);
plot([x;xx]')
legend('',['Reconstructed, N = ' int2str(Needed)],'Location','SouthEast')

FFT/DFT/DCT相关推荐

  1. FS、DFS、FT、DTFT、DFT、FFT、DCT变换的联系与区别

    目录 前言 FS( 连续时间周期信号的傅里叶级数) DFS(离散傅里叶级数) FT(连续时间非周期信号的傅里叶变换) DTFT(离散时间傅里叶变换) DFT(离散傅里叶变换) FFT(快速傅里叶变换) ...

  2. Python-opencv fft、dct变换 + 幅度、相位谱结合实现艺术效果

    1. 快速傅里叶变换(FFT) 原始二维傅里叶变换公式: np工具箱中有fft2函数可以对图像做二维快速傅里叶变换(不断分解成更小的.更容易的小蝶形变换替换大变换),但是要让输出的频谱图更有视觉效果, ...

  3. 信号基础知识--FFT DFT

    clc;close all;clear all; f0=10; fs=100;     %采样率 t=1/fs:1/fs:2;         %共两秒钟,共200个采样点.采样间隔T=1/100 y ...

  4. FT,DTFT,DFT,IDFT,FFT含义

    1.傅立叶变换FT(Fourier Transform) 性质:时域连续,频域连续 周期信号只有傅立叶级数,严格意义上讲,没有傅立叶变换:但可以令周期信号的周期趋于无穷大,这样,将周期信号变为非周期信 ...

  5. 离散余弦DCT域的数字水印

    基于MATLAB的离散余弦DCT域的数字水印 一.数字水印技术的概述 1.1数字水印的概述 伴随着计算机网络的发展,信息媒体的数字化为信息的存取提供了巨大的便利,显著提高了信息表达的效率和准确性.但是 ...

  6. 基于DCT域的数字水印算法研究与应用

    基于DCT域的数字水印算法研究与应用 目录 摘要 1 一.数字水印技术的概述 2 1.1数字水印的概述 2 二.可实现数字水印技术的实用工具--Matlab 3 2.1概述 3 2.2算法中常用的Ma ...

  7. BZOJ 4259: 残缺的字符串 [FFT]

    4259: 残缺的字符串 题意:s,t,星号任意字符,匹配方案数 和上题一样 多乘上一个\(a_{j+i}\)就行了 #include <iostream> #include <cs ...

  8. FFT(傅里叶快速变换,详细讲解+推导) 每日一遍,算法再见!

    FFT详细推导 FFT(傅里叶快速变换) 一.前置知识 1.复数和单位根 2.单位根的三个引理 3.多项式 二.FFT(快速傅里叶变换推导) 三.IFFT 四.FFT求解多项式乘积模板代码 1.递归版 ...

  9. 深入浅出理解FFT算法。通俗易懂,xilinxIP核仿真

    深入浅出理解FFT算法,通俗易懂,用xilinxIP核心仿真 1.前言:傅里叶变换:时域到频域的转换 FS连续时间周期傅里叶级数->DFS离散傅里叶级数->FT连续时间非周期信号的傅里叶变 ...

最新文章

  1. Ubuntu上用caffe的SSD方法训练Pascal VOC数据集
  2. myeclipse需要配置服务器得项目是,【SpringMVC】使用Myeclipse创建SpringMVC项目【超详细教程】...
  3. Linux 登陆用户时启动 ssh-agent 并在退出时关闭
  4. 【字符串】面试题之替换子串
  5. Python连接Access数据库详细步骤
  6. 停车场管理系统软件概要设计说明书
  7. fscanf()函数详解
  8. C#更新word目录
  9. MATLAB中wcp什么意思,WCP是什么意思
  10. 软件导出excel时提示没有注册类
  11. 计算机第二课堂教学计划,第二课堂教学计划
  12. rf 遍历列表_RF之关键字、变量、循环
  13. Excel 2010 VBA 入门 028 向单元格输入公式
  14. office 论文 页码_WORD目录,页眉,页脚,页码设置技巧 为你的毕业论文收藏吧-以Word 2013演示...
  15. 导航栏不变,切换局部页面的方法
  16. luogu1830 轰炸III
  17. MP4转gif得力工具
  18. 小泉的难题 结构体
  19. PLC软件测试方法,常见plc输入输出信号及检测方法PPT课件
  20. 三峡蓄水将给我们带来什么?

热门文章

  1. “智算中心”,按动着新基建的“快进键”
  2. 硬件加速器中常用的几种加密算法
  3. 基础课程《沉积岩岩石学》及《构造地质学》笔记
  4. webqq的注册登记和聊天页面--运用jsonp跨域
  5. GPIO配置及解读(STM32CubeMx)
  6. EN 45545最新强制性防火标准
  7. 用计算机控制ph,计算机控制实用技术
  8. 4054替代型号SM5201 500mA 线性锂离子电池充电器
  9. access select max_一个央企老屌丝的Access数据库自学之路(1)
  10. 确立目标,明确方法。坚持学习,积极进取。