数字信号处理——离散傅里叶变换
一、四种信号的傅里叶分析。
四种信号时域与频域之间的关系。
时域离散化<=>频域周期化(时域抽样定理)
时域周期化<=>频域离散化(频域抽样定理)
上图中,第一张子图,时域和频域均为连续函数,它无法用ADC采样,以及无法用FPGA/DSP来计算出频谱。
第二张子图,时域为连续函数,它无法用ADC采样得到。
第三张子图,频域为连续函数,它无法用FPGA/DSP来计算出频谱。
第四张子图,时域是离散的,对应了ADC采样后为离散的数值,而频域也为离散的,说明离散傅里叶变换的结果不能完全代表实际的频谱(存在误差),但是离散傅里叶变换可以让你观察到频谱的大致的趋势。
只有时域和频域均为离散的,才可以使用ADC采样后,再通过FPGA/DSP等数字芯片进行处理。
二、傅里叶变换的解析。
对离散周期信号取一个周期的值,再做离散傅里叶级数,就是离散傅里叶变换。
所以离散傅里叶变换,暗含了把离散非周期信号经过周期延拓后,变成了离散周期信号。
只不过周期延拓不需要自己处理,这也简化了计算。
同时,揭示了傅里叶变换的基是周期的正弦信号,所以它只能将周期信号变换到频域中去。
傅里叶变换的基,是优势的同时也是劣势。因为它不能处理时变信号,比如:心电信号等。
对于时变信号,使用小波变换更适合,因为小波变换的基不是周期信号,而是一个有限长且衰减的基,所以它既能提取频域的信息,也能提取时域的信息。
三、三角函数的正交性。
这里,sin和cos是正交的,只有与自己频率相同时,积分不为0,也就是说留下了该频率。
而与自己频率不同的,积分为0,就是去掉了。
我们再看傅里叶变换的公式。
其中指数可以用欧拉公式转为正弦函数
而积分限为负无穷到正无穷,可以看成是整个频域,从负无穷一直扫频到正无穷,积分不为0的频率,就留下来了,最后连在一起形成了频谱。
其中,模为幅频特性,而相角为相频特性。
这就是为什么傅里叶变换需要用正交的正弦、余弦函数了,那么换成另一种也是正交的函数,作为傅里叶变换的基,是否也是可行的?这个问题由读者自己思考了。
连续信号的傅里叶变换是积分,那么对于离散信号的傅里叶变换就是求和,但要满足绝对可和的条件。
四、离散傅里叶变换Matlab实现。
function [] = dft()
clear;close all;clc;%选择其中一行xk
xk = [1,1,1,1]; % 时域
% xk = [1,1,1,1,0,0,0,0]; % 时域
% xk = [1,1,1,1,0,0,0,0,0,0,0,0]; % 时域N = length(xk);
Wn = zeros(N,N);
WnExpRect = zeros(N,N);
for m=1:Nfor k=1:N%m和k作为Matlab数组下标是从1开始(但公式上是从0开始)% 但是作为幂要减1WnExpRect(m,k) = (m-1)*(k-1); %Wn幂的矩阵Wn(m,k) = calW(N)^((m-1)*(k-1));end
end
WnExpRect
Xm = Wn * xk' % 矩阵相乘得到DFT结果,频域
subplot(211)
stem(xk);
subplot(212)
stem(abs(Xm)); % 幅频特性
hold on
plot(abs(Xm));function result = calW(N) %计算Wnresult = exp(-i * (2*pi/N));
xk = [1,1,1,1]; 时,如下图所示。
xk = [1,1,1,1,0,0,0,0]; 时,如下图所示。
xk = [1,1,1,1,0,0,0,0,0,0,0,0]; 时,如下图所示。
可以看出,给序列补零可以得到更多的抽样值,频谱也更接近真实的趋势。
五、离散傅里叶反变换Matlab实现。
function [] = idft()
clear;close all;clc;%选择其中一行xk
Xm = [4,0,0,0]; % 频域N = length(Xm);
Wn = zeros(N,N);
WnExpRect = zeros(N,N);
for m=1:Nfor k=1:N%m和k作为Matlab数组下标是从1开始(但公式上是从0开始)% 但是作为幂要减1WnExpRect(m,k) = (m-1)*(k-1); %Wn幂的矩阵Wn(m,k) = calW(N)^(-(m-1)*(k-1));end
end
WnExpRect
xk = (Wn * Xm')/N % 矩阵相乘得到IDFT结果,时域
subplot(211)
stem(abs(Xm));
subplot(212)
stem(xk); % 时频
hold on
plot(xk);function result = calW(N) %计算Wnresult = exp(-i * (2*pi/N));
从上图可以看出,反变换的结果正好是[1,1,1,1],对应正变换的时域。
六、离散傅里叶变换的性质(只列出一部分)。
6.1. 线性。
6.2. 圆周时域移位。
6.3. 圆周频域移位。
6.4. 复共轭特性。
6.5. 对称性。
6.6. 循环卷积定理。
七、离散傅里叶变换计算卷积。
7.1. 两个序列较长,而长度相当时,用离散傅里叶变换来计算卷积效率较高。
7.2. 两个短序列时,效率较低。
7.3. 一个长序列和一个短序列可以使用分段卷积,有两种方法:重叠相加法、重叠保留法。
7.4. 重叠相加法:把长序列分成若干个短序列,再分别进行离散傅里叶变换,再加起来,其中有重叠的部分长度为短序列长度M-1。
7.5. 重叠保留法:把长序列分成若干个短序列(长度为N),再扩充另一个短序列长度M-1个点,那么若干个短序列的长度为N+M-1。
再分别计算循环卷积,其中将重叠的部分长度为M-1个点去掉,再把剩下的连起来。
八、混叠现象、泄漏现象、窗函数、栅栏现象。
8.1 混叠现象。
工程中所遇到的信号一般是时间有限且频带无限、时间无限且频带有限的信号。不存在时间有限,而且频带也有限的信号。
在用ADC采样实际的信号时,其序列是有限的(时间有限且频带无限),也就是说在序列前、后均截断了。那么在截断的那里就会出现高频分量(信号产生突变)。
那么这个截断误差就会带来混叠现象。
要克服混叠现象,可以采取抗混叠滤波器和减少采样间隔。
8.2 泄漏现象。
对于时间无限且频带有限的信号,一般采取加窗处理,也就是将时域的信号乘以窗函数,根据卷积定理,时域乘积对应频域卷积。
加窗之后,由于窗函数不能完全包含真实的频谱,频谱向两边扩散了,也就是频谱泄漏。
对于频谱泄漏,可以考虑选择合适的窗函数和宽度来改善。
8.3 窗函数。
在ADC采样完成之后,就是默认的对信号加了矩形窗,这个是无法改变的,但是可以对矩形窗进行加权。
也就是说,只有矩形窗才是真正的加窗,其它窗都是加权窗,在矩形的基础上进行加权(并非加两次窗)。
8.4 栅栏现象。
对于真实的频谱应该是个连续的曲线,但是使用DFT后,得到的频谱却是离散的,也就是说对真实的频谱进行采样。
那么DFT的频谱像是隔着栅栏来观察真实的频谱,这个叫栅栏效应,可以通过补零来改善。
数字信号处理——离散傅里叶变换相关推荐
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | 实序列的幅频特性偶对称 | 实序列相频特性奇对称 | 示例说明 )
文章目录 一.实序列的 幅频特性 和 相频特性 对称性质 二.性质由来 三.示例说明 一.实序列的 幅频特性 和 相频特性 对称性质 如果 x(n)x(n)x(n) 序列是 " 实序列 &q ...
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 )
文章目录 一.序列傅里叶变换共轭对称性质示例 1.序列傅里叶变换共轭对称性质 1.序列实部傅里叶变换 2.序列虚部傅里叶变换 3.共轭对称序列傅里叶变换 4.共轭反对称序列傅里叶变换 2.求 a^n ...
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 原序列实部 x_R(n) 的 傅里叶变换 是 原序列傅里叶变换 的 共轭对称序列 )
文章目录 一.前置公式定理 1.相关元素说明 x(n) 分解为实部序列与虚部序列 x(n) 分解为共轭对称序列与共轭反对称序列 ( 序列对称分解 ) X(e^{jω}) 分解为实部序列与虚部序列 X( ...
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 共轭对称序列 x_e(n) 的 傅里叶变换 是 原序列傅里叶变换 的实部 )
文章目录 一.前置公式定理 1.相关元素说明 x(n) 分解为实部序列与虚部序列 x(n) 分解为共轭对称序列与共轭反对称序列 ( 序列对称分解 ) X(e^{jω}) 分解为实部序列与虚部序列 X( ...
- 【数字信号处理】傅里叶变换性质 ( 傅里叶变换频移性质示例 | PCM 音频信号处理 | 使用 matlab 进行频移操作 )
文章目录 一.PCM 音频信号处理 二.要点说明 一.PCM 音频信号处理 给定一段 PCM 音频数据 , 封装到 .WAV 文件 中 , 此时的信号 是 实信号 , 每个 PCM 音频采样都是一个 ...
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | 推论 )
文章目录 一.序列傅里叶变换共轭对称性质 推论 二.证明推论一 一.序列傅里叶变换共轭对称性质 推论 推论一 : 序列 x(n)x(n)x(n) 的 共轭序列 x∗(n)x^*(n)x∗(n) 的 傅 ...
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | 序列实偶 傅里叶变换 实偶 | 序列实奇 傅里叶变换 虚奇 | 证明 “ 序列实奇 傅里叶变换 虚奇 “ )
文章目录 一.序列实偶 傅里叶变换 实偶 二.序列实奇 傅里叶变换 虚奇 三.证明 " 序列实奇 傅里叶变换 虚奇 " 1.前置公式定理 ①.序列实部傅里叶变换 ②.序列虚部傅里叶 ...
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | x(n) 分解为实部序列与虚部序列 | 实部傅里叶变换 | 虚部傅里叶变换 | 共轭对称傅里叶变换 | 共轭反对称傅里叶变换 )
文章目录 一.前置概念 1.序列对称分解定理 2.傅里叶变换 3.傅里叶变换的共轭对称分解 二.序列傅里叶变换共轭对称性质 0.序列傅里叶变换共轭对称性质 x(n) 分解为实部序列与虚部序列 x(n) ...
- 【数字信号处理】傅里叶变换性质 ( 频域函数的共轭对称分解 | 序列的傅里叶变换 | 傅里叶变换的共轭对称 | 傅里叶变换的共轭反对称 )
文章目录 一.频域函数 ( 傅里叶变换 ) 的共轭对称分解 二.序列对称分解定理 三.傅里叶变换的共轭对称与共轭反对称 x(n)x(n)x(n) 的 傅里叶变换 是 X(ejω)X(e^{j \ome ...
最新文章
- Scala Implicit
- mac下安装JAVA开发工具(6)------tomcat、IDEA及nginx转发80端口到8080
- myeclipse试用小记----Hibernate多对一双向关联(2)
- unix系统编码 java_JAVA字符编码系列三:Java应用中的编码问题
- 获取会话名称时错误 5_5种可重复的数据科学工具
- MD文件阅读工具及配置
- Java毕设项目宠物管理系统计算机(附源码+系统+数据库+LW)
- WINDOWS CMAKE与NMAKE
- 为什么我偏爱用GitHub来写书?
- 服务器电脑可以显示移动硬盘,笔记本电脑插移动硬盘为什么显示拒绝访问无法访问?
- 顺序结构(C语言基本结构)
- ROS urdf rviz xacro文件中的<inertia>详解
- 2021年中国互联网企业100强(附名单)
- 成年人英语速成指南(附资源及工具)
- 可用的公开 RTSP/ RTMP 在线视频流资源地址(亲测可行)
- 无需翻墙,快速接入免费网页版 ChatGPT 到 Java 应用程序中
- nvidia驱动安装,屏幕偏移调整,及屏幕刷新率解决办法(摘自:中国Linux公社)
- SVA(立即断言、并发断言、触发判断)-概述
- 数据库两时间类型相减_sql中两个时间类型相减得到的值
- 大学物理上册常用公式