C语言编程计算信噪比SNR理解学习

 更新时间:2021年10月11日 10:19:09   作者:Supre_yuan  
这篇文章主要介绍了C语言编程信噪比SNR计算的理解学习,信噪比,英文名称叫做SNR或S/N(SIGNAL-NOISE RATIO)。是指一个电子设备或者电子系统中信号与噪声的比例

概念

这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化。

计算方法

信噪比的计量单位是dB,其计算方法是10lg(Ps/Pn),其中Ps和Pn分别代表信号与噪声的有效功率,也可以换算成电压幅值的比率关系:20Lg(Vs/Vn),Vs和Vn分别代表信号和噪声电压的“有效值”。
在音频放大器中,我们希望的是该放大器除了放大信号外,不应该添加任何其它额外的东西。因此,信噪比应该越高越好。

相关认知

狭义来讲是指放大器的输出信号的功率与同时输出的噪声功率的比,常常用分贝数表示,设备的信噪比表明它产生的噪声越少。
一般来说,信噪比越大,说明混在信号里的噪声越小,声音回放的音质量越高,否则相反。

信噪比一般不应该低于70dB,高保真音响的信噪比应达到110dB以上。

Taprint中的信噪比

在登录认证过程中,用户需要先打开触摸屏。当用户在笔记本电脑键盘上打字或洗碗时,他/她可能无法打开智能手表的触摸屏。
然而,在文本输入过程中,在手背上打字时的一些动作(例如拿起物体或抓手)可能会触发误报。示例如图6所示,它绘制了在5种类型的用户活动期间检测到的振动信号,这5种振动信号分别为:

  • 抓手
  • 握拳
  • 拿起一个物体
  • 轻轻敲击
  • 走路的时候敲击

在这里插入图片描述

请注意,这些振动信号均由20Hz的Butterworth高通滤波器过滤。在上图中,我们观察到手指敲击(即使是轻微敲击)的信噪比(SNR)明显高于其他动作。因此,当信号信噪比超过某一阈值(默认为20dB)时,我们可以简单地分割出一个由敲击引起的振动信号。

实例

在这里插入图片描述

clear all;
clc;
X = sqrt(2)*sin(0:pi/1000000:6*pi);                % 产生正弦信号
Y = awgn(X, 14, 'measured');                       % 加入信噪比为14db的噪声,加入前预估信号的功率(强度)
sigPower = sum(abs(X).^2) / length(X);             % 求出信号功率
noisePower = sum(abs(Y - X).^2) / length(Y - X);   % 求出噪声功率
SNR_10 = 10*log10(sigPower/noisePower)             % 由信噪比定义求出信噪比,单位为db
b = snr(X, Y-X)                                    % snr(a,b) : a是原始信号,b是噪声信号

输出:

SNR_10 =
	14.0033

b =
	14.0033

以上就是C语言编程信噪比SNR计算理解学习的详细内容,更多关于C语言信噪比SNR的资料请关注脚本之家其它相关文章!

相关文章

  • C语言数据结构与算法之链表(二)

    C语言数据结构与算法之链表(二)

    在这篇文章中,我们将抛开令人头秃的指针和结构体,我们将另外使用一种数组来实现的方式,叫做模拟链表。让来跟随小编一起学习学习吧
    2021-12-12
  • 基于c++的中国象棋游戏设计与实现

    基于c++的中国象棋游戏设计与实现

    这篇文章主要介绍了基于c++的中国象棋游戏设计与实现,主要操作是possibleMove(int x, int y),通过整个棋盘每个位置上的信息、中国象棋的规则来获得位置(x, y)这个棋子可以移动到的位置,需要的朋友可以参考一下
    2022-02-02
  • C语言 深入浅出讲解指针的使用

    C语言 深入浅出讲解指针的使用

    指针是C语言中一个非常重要的概念,也是C语言的特色之一。使用指针可以对复杂数据进行处理,能对计算机的内存分配进行控制,在函数调用中使用指针还可以返回多个值
    2022-03-03
  • C++一个函数如何调用其他.cpp文件中的函数

    C++一个函数如何调用其他.cpp文件中的函数

    这篇文章主要介绍了C++一个函数如何调用其他.cpp文件中的函数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • C语言实现数据结构迷宫实验

    C语言实现数据结构迷宫实验

    这篇文章主要为大家详细介绍了C语言实现数据结构迷宫实验,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • C++实现简单推箱子小游戏

    C++实现简单推箱子小游戏

    这篇文章主要为大家详细介绍了C++实现简单推箱子小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • C语言输出教学日历表的方法实例

    C语言输出教学日历表的方法实例

    最近帮朋友做一些C语言的练习题,期间遇到了个比较有意思的题目,下面这篇文章主要给大家介绍了关于C语言输出教学日历表的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 用C语言实现二分查找算法

    用C语言实现二分查找算法

    大家好,本篇文章主要讲的是c语言实现二分查找法,感性的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • Qt sender()函数的具体使用

    Qt sender()函数的具体使用

    在处理信号时,Qt提供了一个特殊的函数sender(),可以返回发送信号的对象指针,以实现更灵活的代码逻辑,本文就来介绍一下Qt sender()函数的具体使用,感兴趣的可以了解一下
    2024-01-01
  • C语言#define定义宏的使用详解

    C语言#define定义宏的使用详解

    #define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。本文就来和大家聊聊宏的使用,需要的可以参考一下
    2022-10-10

最新评论