原文来自公众号:工程师看海

后台回复:matlab FFT

可以得到原始matlab代码

欢迎转发支持

傅里叶变换的提出让人们看问题的角度从时域变成了频域,多了一个维度。快速傅里叶变换算法的提出普及了傅里叶变换在工程领域的应用,在科学计算和数字信号处理等领域,离散傅里叶变换(DFT)至今依然是非常有效的工具之一。

比如下图是一个幅度为1、频率为2Hz的正弦波和它的离散傅里叶变换后的结果

信噪比(SNR)是信号与噪声的比率,它是衡量通信或模拟系统性能的重要指标之一,与傅里叶变换更是有千丝万缕的联系。在很多情况下,我们是通过傅里叶变换来评估信噪比,如果评估方法不对,很难的到我们期望的结果,经常会事与愿违。

求解SNR的过程,我们是用‘评估SNR’来描述,这就是说我们无法精确计算出SNR,只能进行评估,事实也是如此。

评估SNR的方法分为时域和频域两种。我们以一组离散样本点为分析目标,看下如何评估SNR,及其误区。

时域估计SNR

Xs(n)为信号序列,Xn(n)为噪声序列,则信号X(n)=Xs(n)+Xn(n),是一组带噪离散序列,在时域上评估X(n)的信噪比公式如下:

其意义为分别求取离散信号、噪声功率和,计算二者之比。这里有个前提是,我们需要分离出信号与噪声,然后才能求解,

然而问题也在于此,对于一段给定的离散时间序列,我们很难完全分离出信号和噪声,所以时域评估SNR是有局限性的,而且不够直观,所以通常我们在频域下求解。

                    频域估计SNR

在频域上的SNR计算原理和时域很接近,还是求信号功率与噪声功率只比。最简单的方法是在频谱X(m)上设置阈值,阈值之上为信号,阈值之下为噪声。这样就会有阈值设置带来的估计准确性问题,同时信号频带范围内或多或少也会有噪声叠加进来,在频域计算SNR也是一个近似。

SNR以dB作为单位,SNR(dB)=10*log10(SNR)。

我们往往使用Matlab评估SNR,Matlab是非常强大的数学工具,其集成了SNR计算函数,如果应用不正确,误差会非常大,无法得到预期结果,举例如下。

下图是一个幅度为1、频率为2Hz的正弦波和它的离散傅里叶变换后的结果。

用Matlab SNR函数计算计算信噪比的结果如下,蓝色为感兴趣的信号成分,橙色为噪声。这个频域图就可以表征SNR,橙色的噪声数值越小、越低,说明信噪比越高、越好。即使红色圆圈部分有一点噪声,在评估单频率成分信号的SNR时,这依然是一个非常有效的手段。

假如一信号x(n)=sin(4pi*t)+0.5*sin(18pi*t),如下图是一个幅度为1、频率为2Hz的正弦波叠加幅度为0.5、频率为9Hz的正弦波的结果。

用Matlab SNR函数计算计算信噪比的结果如下,蓝色为感兴趣的信号成分,橙色为噪声,matlab舍弃了频率为9Hz、能量少的成分,只计算了2Hz信号的信噪比。

所以倘若我们的感兴趣信号比较复杂,就不能直接用SNR函数直接计算。

所以我们一定要在理解DFT与SNR关系的基础上,正确使用matlab才能得到期望的SNR结果。

在过采样中,信噪比、ADC有效位数、过采样率是有千丝万缕的联系,了解了基本的概念后,我们一步一步理解过采样的原理。

---------------------分割线---------------------

往期干货:

华为海思软硬件开发资料

过采样系列二:傅里叶变换与信噪比相关推荐

  1. 快速傅里叶变换python_【原创】OpenCV-Python系列之傅里叶变换(三十八)

    OpenCV-Python系列之傅里叶变换 傅里叶变换 我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班...以时间为参照就是时域分析. 但是在频域中一切都是静止的! ...

  2. PyTorch系列 (二): pytorch数据读取自制数据集并

    PyTorch系列 (二): pytorch数据读取 PyTorch 1: How to use data in pytorch Posted by WangW on February 1, 2019 ...

  3. 阵列信号DOA估计系列(二).导向矢量与空间FFT(附代码)

    阵列信号DOA估计系列(二).导向矢量 在DOA估计里面,经常会看到导向矢量这个名词,也有的地方叫方向矢量,方向矩阵,基本上都是array steering vector 的翻译. 本文首先对均匀线阵 ...

  4. 图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)

    图机器学习(GML)&图神经网络(GNN)原理和代码实现(PGL)[前置学习系列二] 上一个项目对图相关基础知识进行了详细讲述,下面进图GML networkx :NetworkX 是一个 P ...

  5. 西门子S7-200PLC系列(二)

    西门子S7-200PLC系列(二) 软元件(定义):用户使用的PLC中每一个输入/输出.内部存储单元.定时器和计数器等都称作软元件. 软元件(组成):电子电路和寄存器及存储单元组成 软元件有其不同的功 ...

  6. 数据与广告系列二十七:智能定向独特业务的独有炼丹配方

    作者·黄崇远 『数据虫巢』 全文共4534字 题图ssyer.com " 没点独特的东西,怎么好意思说自己在炼仙丹." 本文强接上文<数据与广告系列二十六:知识迁移的Embe ...

  7. 数据与广告系列二十六:知识迁移的Embedding应用,智能化定向的解药

    作者·黄崇远 『数据虫巢』 全文共4348字 题图ssyer.com " 效果广告后定向时代,虽有千般万难,我们一样还得解决定向智能的问题." 需要提前说明的是,这一篇会涉及到本系 ...

  8. A.图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)

    图学习图神经网络算法专栏简介:主要实现图游走模型(DeepWalk.node2vec):图神经网络算法(GCN.GAT.GraphSage),部分进阶 GNN 模型(UniMP标签传播.ERNIESa ...

  9. 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2+kibanaV5.4.2+x-packV5.4.2安装

    相关博文: 搜索引擎ElasticSearchV5.4.2系列一之ES介绍 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2+klanaV5.4.2+x-p ...

最新文章

  1. 什么是php model类,thinkphp的自定义model类有什么作用?
  2. Hadoop集群配置(最全面总结)
  3. 新手搭建阿里云FTP服务器
  4. 数据结构Stack:关系以及方法
  5. python解决四舍五入问题
  6. XCTF-高手进阶区:PHP2
  7. 【模拟】Biotech
  8. Java EE 7:新增功能???
  9. matlab pca可视化,利用Matlab实现PCA demo展示
  10. phoneGap 中修改生成APP的名字
  11. 苏宁易购第二次债券购回基本方案:购回资金总额20亿元
  12. Maven 持续介绍与注意事项
  13. 韦诺之战wesnoth没有声音
  14. 企业服务总线 ESB 介绍和用例
  15. OSChina 周二乱弹 —— 这份躺着挣钱的工作
  16. 【JAVA】easyexcel 导出excel文件带多个图片
  17. 回顾知识点:计算机网络篇
  18. 一个有趣推理题的答案
  19. 关于移动端token解决方案
  20. 在qt实现手机通讯录系统_通讯录管理系统的设计与实现(QT,SQlite)

热门文章

  1. 如何利用PHP防范CC攻击
  2. google引擎地址
  3. hdu1004——Let the Balloon Rise
  4. 指纹传感器的测试软件,【Arduino】168种传感器系列实验(149)-AS608光学指纹识别模块-Arduino中文社区 - Powered by Discuz!...
  5. C# 合并、拆分PDF
  6. 如何合并多个PDF图为一张PDF图?(矢量无损,最简单)
  7. 基于Android智能跑步机设计与实现
  8. 安卓逆向分析之捕鱼达人
  9. 不可逆调速matlab,双闭环不可逆直流调速系统课程设计(matlab仿真设计).pdf
  10. c语言解析IP字符串