一、四种信号的傅里叶分析。

四种信号时域与频域之间的关系。

时域离散化<=>频域周期化(时域抽样定理)

时域周期化<=>频域离散化(频域抽样定理)

上图中,第一张子图,时域和频域均为连续函数,它无法用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的频谱像是隔着栅栏来观察真实的频谱,这个叫栅栏效应,可以通过补零来改善。

数字信号处理——离散傅里叶变换相关推荐

  1. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | 实序列的幅频特性偶对称 | 实序列相频特性奇对称 | 示例说明 )

    文章目录 一.实序列的 幅频特性 和 相频特性 对称性质 二.性质由来 三.示例说明 一.实序列的 幅频特性 和 相频特性 对称性质 如果 x(n)x(n)x(n) 序列是 " 实序列 &q ...

  2. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 )

    文章目录 一.序列傅里叶变换共轭对称性质示例 1.序列傅里叶变换共轭对称性质 1.序列实部傅里叶变换 2.序列虚部傅里叶变换 3.共轭对称序列傅里叶变换 4.共轭反对称序列傅里叶变换 2.求 a^n ...

  3. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 原序列实部 x_R(n) 的 傅里叶变换 是 原序列傅里叶变换 的 共轭对称序列 )

    文章目录 一.前置公式定理 1.相关元素说明 x(n) 分解为实部序列与虚部序列 x(n) 分解为共轭对称序列与共轭反对称序列 ( 序列对称分解 ) X(e^{jω}) 分解为实部序列与虚部序列 X( ...

  4. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 共轭对称序列 x_e(n) 的 傅里叶变换 是 原序列傅里叶变换 的实部 )

    文章目录 一.前置公式定理 1.相关元素说明 x(n) 分解为实部序列与虚部序列 x(n) 分解为共轭对称序列与共轭反对称序列 ( 序列对称分解 ) X(e^{jω}) 分解为实部序列与虚部序列 X( ...

  5. 【数字信号处理】傅里叶变换性质 ( 傅里叶变换频移性质示例 | PCM 音频信号处理 | 使用 matlab 进行频移操作 )

    文章目录 一.PCM 音频信号处理 二.要点说明 一.PCM 音频信号处理 给定一段 PCM 音频数据 , 封装到 .WAV 文件 中 , 此时的信号 是 实信号 , 每个 PCM 音频采样都是一个 ...

  6. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | 推论 )

    文章目录 一.序列傅里叶变换共轭对称性质 推论 二.证明推论一 一.序列傅里叶变换共轭对称性质 推论 推论一 : 序列 x(n)x(n)x(n) 的 共轭序列 x∗(n)x^*(n)x∗(n) 的 傅 ...

  7. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | 序列实偶 傅里叶变换 实偶 | 序列实奇 傅里叶变换 虚奇 | 证明 “ 序列实奇 傅里叶变换 虚奇 “ )

    文章目录 一.序列实偶 傅里叶变换 实偶 二.序列实奇 傅里叶变换 虚奇 三.证明 " 序列实奇 傅里叶变换 虚奇 " 1.前置公式定理 ①.序列实部傅里叶变换 ②.序列虚部傅里叶 ...

  8. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | x(n) 分解为实部序列与虚部序列 | 实部傅里叶变换 | 虚部傅里叶变换 | 共轭对称傅里叶变换 | 共轭反对称傅里叶变换 )

    文章目录 一.前置概念 1.序列对称分解定理 2.傅里叶变换 3.傅里叶变换的共轭对称分解 二.序列傅里叶变换共轭对称性质 0.序列傅里叶变换共轭对称性质 x(n) 分解为实部序列与虚部序列 x(n) ...

  9. 【数字信号处理】傅里叶变换性质 ( 频域函数的共轭对称分解 | 序列的傅里叶变换 | 傅里叶变换的共轭对称 | 傅里叶变换的共轭反对称 )

    文章目录 一.频域函数 ( 傅里叶变换 ) 的共轭对称分解 二.序列对称分解定理 三.傅里叶变换的共轭对称与共轭反对称 x(n)x(n)x(n) 的 傅里叶变换 是 X(ejω)X(e^{j \ome ...

最新文章

  1. Scala Implicit
  2. mac下安装JAVA开发工具(6)------tomcat、IDEA及nginx转发80端口到8080
  3. myeclipse试用小记----Hibernate多对一双向关联(2)
  4. unix系统编码 java_JAVA字符编码系列三:Java应用中的编码问题
  5. 获取会话名称时错误 5_5种可重复的数据科学工具
  6. MD文件阅读工具及配置
  7. Java毕设项目宠物管理系统计算机(附源码+系统+数据库+LW)
  8. WINDOWS CMAKE与NMAKE
  9. 为什么我偏爱用GitHub来写书?
  10. 服务器电脑可以显示移动硬盘,笔记本电脑插移动硬盘为什么显示拒绝访问无法访问?
  11. 顺序结构(C语言基本结构)
  12. ROS urdf rviz xacro文件中的<inertia>详解
  13. 2021年中国互联网企业100强(附名单)
  14. 成年人英语速成指南(附资源及工具)
  15. 可用的公开 RTSP/ RTMP 在线视频流资源地址(亲测可行)
  16. 无需翻墙,快速接入免费网页版 ChatGPT 到 Java 应用程序中
  17. nvidia驱动安装,屏幕偏移调整,及屏幕刷新率解决办法(摘自:中国Linux公社)
  18. SVA(立即断言、并发断言、触发判断)-概述
  19. 数据库两时间类型相减_sql中两个时间类型相减得到的值
  20. 大学物理上册常用公式

热门文章

  1. 从星巴克店面运营学习 DevOps
  2. R语言入门教程知识 第七章 特殊值
  3. 解决java中浮点数相除向上取整出错的方法
  4. c语言中extem的作用,extern是什么意思?C语言中extern用法全解
  5. 奇虎归来:周鸿祎讲的新故事能否弯道超车
  6. dede image.class.php,织梦CMS中图片处理类
  7. 【老生谈算法】matlab实现TDOA定位的Chan算法源码——TDOA定位
  8. SCHNOKA施努卡:3D视觉装配引导解决方案
  9. STC15F2K60S2芯片PWM的应用
  10. 捷联惯导算法与组合导航原理学习——等效旋转矢量和姿态阵转换(一)