声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: yhc310

[滤波] 求信噪比计算公式

[复制链接]
发表于 2009-3-22 09:48 | 显示全部楼层

回复 25楼 ming5819205 的帖子

function y=snr(x1,x2);%x1是原始信号,x2是降噪后信号
N=length(x1);
y1=sum(x2.^2); %去噪后信号的能量
y2=sum((x1-x2).^2);
y=10*log10(y1/y2);

信噪比是去噪后信号的能量比上取出的噪声能量。
回复 支持 反对
分享到:

使用道具 举报

发表于 2009-3-22 09:48 | 显示全部楼层

回复 31楼 syy2468 的帖子

function y=snr(x1,x2);%x1是原始信号,x2是降噪后信号
N=length(x1);
y1=sum(x2.^2); %去噪后信号的能量
y2=sum((x1-x2).^2);
y=10*log10(y1/y2);

信噪比是去噪后信号的能量比上去除的噪声能量。
发表于 2009-3-22 10:55 | 显示全部楼层

回复 9楼 zhangnan3509 的帖子

这个程序求出的只是输入信噪比,输出信噪比怎么求呢
发表于 2009-3-24 11:29 | 显示全部楼层
本帖最后由 VibInfo 于 2016-11-8 14:46 编辑
原帖由 zhangnan3509 于 2007-8-2 21:22 发表
这应该和eight的精华贴 相得益彰啊
http://www.chinavib.com/forum/vi ... p%3Bfilter%3Ddigest
上面是仿真信号的信噪比总结
而本贴则是针对实际数据处理降噪后,来计算信噪比的程序。使得精华贴更完善了
functi ...

偶然翻到这个老帖子,发表点自己的看法,
大家应该都注意到了,输入信噪比用“消噪后的信号能量/消去的噪声能量”来估计,
但是sum(x1-x2)^2能表示消去的噪声能量吗?
如果消噪方法不产生相移的话,
我觉得此方法似乎可行,
但有些消噪方法并不能保证消噪后的信号还跟输入信号保持相同相位。
所以用sum(x1.^2-x2.^2)来估计消去的噪声能量会不会更正确一些?

点评

sum计算值可能出现负数...  发表于 2012-6-12 20:20
发表于 2009-4-13 17:23 | 显示全部楼层
我觉得 jytan 讲的很有道理!
发表于 2009-10-28 22:13 | 显示全部楼层
实际使用中,可能依据环境情况使用合适的方法。比如在超声信号处理中,信噪比是这样计算的,首先设定一个时间窗口,计算

时间窗口内染噪信号的均方根Root-mean-square,就是该信号对零的偏差(记得信号要校正为零), 接着

计算该时间窗口内

染噪信号的最大幅值,因是射频显示,所以信噪比是SNR=20*log10(Amax/RMS)。

这是美国一个公司采取的算法,具体的原因大家讨论讨论,相互学习。

[ 本帖最后由 james551304 于 2009-10-28 22:20 编辑 ]
发表于 2009-12-1 16:48 | 显示全部楼层

用纯净信号与去噪信号求信噪比

如果我要比较两种去噪效果的优劣,能不能用纯净信号来做呢
假设一纯净信号x ,加噪声得到设定的信噪比SNR1 ,去噪后信号y。
那么信噪比SNR2可否这样计算 :

Ps=sum(abs(x).^2);%纯净信号能量
Po=sum((abs(x)-abs(y)).^2);%去噪信号含有的噪声能量
SNR2=10*log10(Ps/Po);

比较不同去噪方法的SNR2的大小,从而比较其去噪效果优劣。

请大家指导一下,这样是否可行?

点评

赞成: 5.0
赞成: 5
若要对比几种降噪方法的优劣, 个人赞同该做法. 但#7L中公式也有其相应的意义,即降噪后信号的能量 与 降低的噪声能量之比.  发表于 2012-6-13 12:31
发表于 2010-1-10 22:14 | 显示全部楼层

回复 31楼 syy2468 的帖子

我认为所得的结果应该是原始信号的信噪比吧。
发表于 2010-1-11 22:00 | 显示全部楼层
信噪比可以是负值的呀
发表于 2010-4-1 15:38 | 显示全部楼层
我觉得首先应该搞清楚信噪比的定义
发表于 2011-3-19 16:20 | 显示全部楼层
回复 9 # zhangnan3509 的帖子

原始信号去噪,就说明原始信号含噪声。信噪比,就是针对信号与噪声而言的,应该是去噪之后的信号与噪声的信噪比,如果原始信号与噪声之间的信噪比,那就是带噪声信号与噪声比了,与信噪比的定义相违背,我觉得你的说是对的。
发表于 2012-6-12 20:07 | 显示全部楼层
本帖最后由 ufo158 于 2012-6-12 20:31 编辑

回复 37 # chenyuluoyan 的帖子

个人理解为: 有用信号(或相对较为纯净的信号)  与 噪声的比值关系.


  1. function mysnr = myFunc_SP_CalSNR(I,In)
  2. %%
  3. %函数功能: 计算信号信噪比.
  4. %           理解为: 有用信号(或相对较为纯净的信号) 与 噪声的比值关系.
  5. %输入参数:
  6. %       I:      N*1,原始信号(仿真信号,不含噪声的信号) 或 滤波降噪***"后"***的信号.
  7. %                   可理解为:相对纯净的信号,噪声水平相对较低.
  8. %       In:     N*1,含有噪声的信号(仿真信号+噪声) 或 滤波降噪***"前"***的信号.
  9. %                   可理解为:噪声水平相对较高的信号.
  10. %       noise:  (不输入)N*1,噪声信号, noise = In-I;
  11. %输出参数:
  12. %       mysnr:  1*1,信号信噪比值(dB).
  13. %       对于既是仿真信号,又对仿真信号进行降噪的时候,我做如下理解:
  14. %              仿真信号加入噪声后的信噪比: I:原始纯净信号, In:纯净信号中加入噪声的信号之和.
  15. %              仿真信号滤波降噪后的信噪比: I:滤波后的信号, In:滤波前的信号(滤波后的信号+滤除的噪声).

  16. %
  17. noise = In-I;%噪声
  18. Ps=sum(sum(I.^2));%signal power,相对纯净信号的功率.
  19. Pn=sum(sum((In-I).^2));%noise power,噪声信号功率.
  20. mysnr=10*log10(Ps/Pn);%注意log10对数.
复制代码

按照37L的做法, 计算降噪后的SNR, 但是I使用 纯净信号, 相当于计算纯净信号的信噪比,
不够恰当.
发表于 2012-6-14 19:34 | 显示全部楼层
回复 10 # xuyuling 的帖子

你好。我也总是求的信噪比为负值。我想请问您是怎么解决的?
发表于 2012-10-7 21:08 | 显示全部楼层
新来的,连eight大神的帖子都看不了
发表于 2012-10-14 21:06 | 显示全部楼层
长见识了,我觉得这个编程被大家完善了。
如果这个snr公式要是被用于随机共振中SNR定义,不知道如何编程,请赐教!!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 05:46 , Processed in 0.058871 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表