DCT变换的原理及算法 文库介绍

对于初学数字信号处理(DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理。

学习过《高等数学》和《信号与系统》这两门课的朋友,都知道时域上任意连续的周期信号可以分解为无限多个正弦信号之和,在频域上就表示为离散非周期的信号,即时域连续周期对应频域离散非周期的特点,这就是傅里叶级数展开(FS),它用于分析连续周期信号

FT是傅里叶变换,它主要用于分析连续非周期信号,由于信号是非周期的,它必包含了各种频率的信号,所以具有时域连续非周期对应频域连续非周期的特点。

FS和FT 都是用于连续信号频谱的分析工具,它们都以傅里叶级数理论问基础推导出的。时域上连续的信号在频域上都有非周期的特点,但对于周期信号和非周期信号又有在频域离散和连续之分

在自然界中除了存在温度,压力等在时间上连续的信号,还存在一些离散信号,离散信号可经过连续信号采样获得,也有本身就是离散的。例如,某地区的年降水量 或平均增长率等信号,这类信号的时间变量为年,不在整数时间点的信号是没有意义的。用于离散信号频谱分析的工具包括DFS,DTFT和DFT。

DTFT是离散时间傅里叶变换 ,它用于离散非周期序列分析,根据连续傅里叶变换要求连续信号在时间上必须可积这一充分必要条件,那么对于离散时间傅里叶变换,用于它之上的离散序列也必 须满足在时间轴上级数求和收敛的条件;由于信号是非周期序列,它必包含了各种频率的信号,所以DTFT对离散非周期信号变换后的频谱为连续的,即有时域离散非周期对应频域连续周期的特点。

当离散的信号为周期序列时,严格的讲,离散时间傅里叶变换是不存在的,因为它不满足信号序列绝对级数和收敛(绝对可和)这一傅里叶变换的充要条件,但是采用DFS(离散傅里叶级数)这一分析工具仍然可以对其进行傅里叶分析。

我们知道周期离散信号是由无穷多相同的周期序列在时间轴上组成的,假设周期为N,即每个周期序列都有N个元素,而这样的周期序列有无穷多个,由于无穷多个 周期序列都相同,所以可以只取其中一个周期就足以表示整个序列了,这个被抽出来表示整个序列特性的周期称为主值周期,这个序列称为主值序列。然后以N对应 的频率作为基频构成傅里叶级数展开所需要的复指数序列ek(n)=exp(j*2pi*k*n/N),用主值序列与复指数序列取相关(乘加运算),得出每 个主值在各频率上的频谱分量,这样就表示出了周期序列的频谱特性。

根据DTFT,对于有限长序列作Z变换或序列傅里叶变换都是可行的,或者说,有限长序列的频域和复频域分析在理论上都已经解决;但对于数字系统,无论是Z 变换还是序列傅里叶变换的适用方面都存在一些问题,重要是因为频率变量的连续性性质(DTFT变换出连续频谱),不便于数字运算和储存。

参考DFS,可以采用类似DFS的分析方法对解决以上问题。可以把有限长非周期序列假设为一无限长周期序列的一个主直周期,即对有限长非周期序列进行周期 延拓,延拓后的序列完全可以采用DFS进行处理,即采用复指数基频序列和此有限长时间序列取相关,得出每个主值在各频率上的频谱分量以表示出这个“主值周 期”的频谱信息。

由于DFT借用了DFS,这样就假设了序列的周期无限性,但在处理时又对区间作出限定(主值区间),以符合有限长的特点,这就使DFT带有了周期性。另 外,DFT只是对一周期内的有限个离散频率的表示,所以它在频率上是离散的,就相当于DTFT变换成连续频谱后再对其采样,此时采样频率等于序列延拓后的 周期N,即主值序列的个数

下面谈谈DFS,DTFT,DFT,FFT的联系与区别

DFT与FFT其实是一个本质,FFT是DFT的一种快速算法。

DFS是discrete fourier seriers,对离散周期信号进行级数展开。DFT是将DFS取主值,DFS是DFT的周期延拓。

DTFT是对Discrete time fourier transformation,是对序列的FT,得到连续的周期谱,而DFT,FFT得到是有限长的非周期离散谱,不是一个。

DTFT与DFT的关系

我们知道,一个N点离散时间序列的傅里叶变换(DTFT)所的频谱是以(2*pi)为周期进行延拓的连续函数,由采样定理我们知道,时域进行采样,则频域 周期延拓;同理,如果在频域进行采样,则时域也会周期延拓。离散傅里叶变换(DFT)就是基于这个理论,在频域进行采样,一个周期内采N个点(与序列点数 相同) ,从而将信号的频谱离散化,得到一的重要的对应关系:一个N点离散时间信号可以用频域内一个N点序列来唯一确定,这就是DFT表达式所揭示的内容。

至 于离散傅里叶变换DFT,其实也是对数字信号变换到频域进行分析处理,它对数字信号处理的作用相当大。数字信号处理脱离了模拟时期对信号进行处理完全依赖 于器件的情况,可以直接通过计算来进行信号处理。如数字滤波器,只是用系统的系数对进入的数字信号进行一定的计算,信号出系统后即得到处理后的数据在时域 上的表达。

离散傅里叶变换在理解上与连续信号的傅里叶变换不太相同,主要是离散信号的傅里叶变换涉及到周期延拓,以及圆周卷积等。

快速傅里叶变换FFT其实是一种对离散傅里叶变换的快速算法,它的出现解决了离散傅里叶变换的计算量极大、不实用的问题,使离散傅里叶变换的计算量降低了 一个或几个数量级,从而使离散傅里叶变换得到了广泛应用。另外,FFT的出现也解决了相当多的计算问题,使得其它计算也可以通过FFT来解决。

图解参考上一篇博客:http://www.cnblogs.com/WHaoL/p/6111267.html

FS,FT,DFS,DTFT,DFT,FFT的联系和区别 数字信号处理的更多相关文章

  1. 《数字信号处理》课程实验1 – FFT的实现

    一.按时间抽选的基-2 FFT实现原理 观察DIT(基2)FFT的流图(N点,N为2的幂次),可以总结出如下规律: (1)共有\(L=\log_2⁡N\)级蝶形运算: (2)输入倒位序,输出自然顺序: ...

  2. FS,FT,DFS,DTFT,DFT,FFT的联系和区别

    DCT变换的原理及算法 文库介绍 对于初学数字信号处理(DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理. 学习过<高等数学>和<信号与系统 ...

  3. FS,FT,DFT,DFS和DTFT的关系

    对于初学数字信号(Digital Signal Processing,DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理. FS:时域上任意连续的周期信号可以分 ...

  4. ft,dtft,dft的关系(转载)

    很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连续时间信号的处理,这里就不过多讨论,只解释一 ...

  5. 几幅图片弄清DFT、DTFT、DFS的关系 数字信号处理

    原址:http://www.cnblogs.com/BitArt/archive/2012/11/24/2786390.html 很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DF ...

  6. 10 从DFS到DFT

    从DFS到DFT 周期序列的级数展开 正如连续时间周期信号可以表示为一系列正弦信号的和的形式,周期序列也可以表示为一系列正弦之和的形式,假设序列\(\tilde{x}[n]\)的周期为\(N\),那 ...

  7. 数字信号处理--FFT与蝶形算法

    在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征.尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理.因此至DFT被发现以来, ...

  8. 数字信号处理专题(3)——FFT运算初探

    一.前言 FFT运算是目前最常用的信号频谱分析算法.在本科学习数字信号处理这门课时一直在想:学这些东西有啥用?公式推来推去的,有实用价值么?到了研究生后期才知道,广义上的数字信号处理无处不在:手机等各 ...

  9. 使用 scipy.fft 进行Fourier Transform:Python 信号处理

    摘要:Fourier transform 是一个强大的概念,用于各种领域,从纯数学到音频工程甚至金融. 本文分享自华为云社区<使用 scipy.fft 进行Fourier Transform:P ...

随机推荐

  1. C#-概念-接口:接口

    ylbtech-C#-概念-接口:接口 接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口. 接口(软件类接口)是指对协定进行定义的引用类型.其他类型实现接口,以保证它们支持某些操作.接 ...

  2. Java常用工具——java包装类

    一.包装类和基本数据类型 装箱:基本数据类型——包装类 拆箱:包装类——基本数据类型 package com.imooc.wrap; public class WrapTestOne { public ...

  3. npm install 安装不成功,提示python2.7

    npm install 安装不成功的原因 是因为缺少python的环境 解决方法: 1.去官网下载https://www.python.org/download/releases/2.7/ 2.安装成 ...

  4. ruby基本语法(1)

    一些学习资源 http://www.codecademy.com/zh/courses/ruby-beginner-en-d1Ylq/0/5?curriculum_id=5059f8619189a50 ...

  5. JAVA泛型知识(二)--> <? extends T>和<? super T>

    <? extends T> 和 <? super T> 是Java泛型中的“通配符(Wildcards)” 和 “边界(Bounds)”的概念 <? extends T& ...

  6. CentOS防火墙命令集

    1. firewalld的基本使用 启动防火墙: systemctl start firewalld 防火墙状态: systemctl status firewalld 停止防火墙: systemct ...

  7. 浏览器调起摄像头(jquery+layui)

    /* 实例化camvas配置参数 config = { video:{width:Number(scale*4),height:Number(scale*3)},//视频比例4:3 canvasId: ...

  8. python学习第七天流程控制循环while和循环for区别

    流程控制循环是任何编程语言都有一种循环结构,在python while 和break continue 搭配使用,还一种while ....else ......,for循环有序列表和字符串 whil ...

  9. C# Winform 窗体界面”假死”后台线程阻塞 解决办法–BeginInvoke

    原文:C# Winform 窗体界面"假死"后台线程阻塞 解决办法–BeginInvoke 这个方法可以用在任何后台任务耗时较长,造成界面“假死”界面控件不更新的情况. 比如要要执 ...

  10. CSRF相关

    CSRF原理 第一次获取页面的时候浏览器返回一个随机字符串,之后提交数据的时候需要把到这个字符串去提交,不然会报错 返回的时候还会把这个字符串放到cookie里面, 使用form提交时候: {% cs ...