FFT/DFT/DCT
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相关推荐
- FS、DFS、FT、DTFT、DFT、FFT、DCT变换的联系与区别
目录 前言 FS( 连续时间周期信号的傅里叶级数) DFS(离散傅里叶级数) FT(连续时间非周期信号的傅里叶变换) DTFT(离散时间傅里叶变换) DFT(离散傅里叶变换) FFT(快速傅里叶变换) ...
- Python-opencv fft、dct变换 + 幅度、相位谱结合实现艺术效果
1. 快速傅里叶变换(FFT) 原始二维傅里叶变换公式: np工具箱中有fft2函数可以对图像做二维快速傅里叶变换(不断分解成更小的.更容易的小蝶形变换替换大变换),但是要让输出的频谱图更有视觉效果, ...
- 信号基础知识--FFT DFT
clc;close all;clear all; f0=10; fs=100; %采样率 t=1/fs:1/fs:2; %共两秒钟,共200个采样点.采样间隔T=1/100 y ...
- FT,DTFT,DFT,IDFT,FFT含义
1.傅立叶变换FT(Fourier Transform) 性质:时域连续,频域连续 周期信号只有傅立叶级数,严格意义上讲,没有傅立叶变换:但可以令周期信号的周期趋于无穷大,这样,将周期信号变为非周期信 ...
- 离散余弦DCT域的数字水印
基于MATLAB的离散余弦DCT域的数字水印 一.数字水印技术的概述 1.1数字水印的概述 伴随着计算机网络的发展,信息媒体的数字化为信息的存取提供了巨大的便利,显著提高了信息表达的效率和准确性.但是 ...
- 基于DCT域的数字水印算法研究与应用
基于DCT域的数字水印算法研究与应用 目录 摘要 1 一.数字水印技术的概述 2 1.1数字水印的概述 2 二.可实现数字水印技术的实用工具--Matlab 3 2.1概述 3 2.2算法中常用的Ma ...
- BZOJ 4259: 残缺的字符串 [FFT]
4259: 残缺的字符串 题意:s,t,星号任意字符,匹配方案数 和上题一样 多乘上一个\(a_{j+i}\)就行了 #include <iostream> #include <cs ...
- FFT(傅里叶快速变换,详细讲解+推导) 每日一遍,算法再见!
FFT详细推导 FFT(傅里叶快速变换) 一.前置知识 1.复数和单位根 2.单位根的三个引理 3.多项式 二.FFT(快速傅里叶变换推导) 三.IFFT 四.FFT求解多项式乘积模板代码 1.递归版 ...
- 深入浅出理解FFT算法。通俗易懂,xilinxIP核仿真
深入浅出理解FFT算法,通俗易懂,用xilinxIP核心仿真 1.前言:傅里叶变换:时域到频域的转换 FS连续时间周期傅里叶级数->DFS离散傅里叶级数->FT连续时间非周期信号的傅里叶变 ...
最新文章
- Ubuntu上用caffe的SSD方法训练Pascal VOC数据集
- myeclipse需要配置服务器得项目是,【SpringMVC】使用Myeclipse创建SpringMVC项目【超详细教程】...
- Linux 登陆用户时启动 ssh-agent 并在退出时关闭
- 【字符串】面试题之替换子串
- Python连接Access数据库详细步骤
- 停车场管理系统软件概要设计说明书
- fscanf()函数详解
- C#更新word目录
- MATLAB中wcp什么意思,WCP是什么意思
- 软件导出excel时提示没有注册类
- 计算机第二课堂教学计划,第二课堂教学计划
- rf 遍历列表_RF之关键字、变量、循环
- Excel 2010 VBA 入门 028 向单元格输入公式
- office 论文 页码_WORD目录,页眉,页脚,页码设置技巧 为你的毕业论文收藏吧-以Word 2013演示...
- 导航栏不变,切换局部页面的方法
- luogu1830 轰炸III
- MP4转gif得力工具
- 小泉的难题 结构体
- PLC软件测试方法,常见plc输入输出信号及检测方法PPT课件
- 三峡蓄水将给我们带来什么?
热门文章
- “智算中心”,按动着新基建的“快进键”
- 硬件加速器中常用的几种加密算法
- 基础课程《沉积岩岩石学》及《构造地质学》笔记
- webqq的注册登记和聊天页面--运用jsonp跨域
- GPIO配置及解读(STM32CubeMx)
- EN 45545最新强制性防火标准
- 用计算机控制ph,计算机控制实用技术
- 4054替代型号SM5201 500mA 线性锂离子电池充电器
- access select max_一个央企老屌丝的Access数据库自学之路(1)
- 确立目标,明确方法。坚持学习,积极进取。