声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1722|回复: 5

[综合] 信噪比求助?

[复制链接]
发表于 2010-11-16 20:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
怎么始终不理解这个信噪比是怎么回事,给点帮助吧;
在论坛上看到说信噪比为10log(norm(s)/norm(n));s是干净信号,n为噪声信号;
可是我用下面这个例子来理解信噪比,为什么不对呢。a为干净信号,s是加噪信号,信噪比为10;那么我用上边的公式反求信噪比10log(norm(a)/norm(s-a))结果也应该是10吧,但是为什么是-4.341呢?这是什么原因啊?
f=30;
fs=1000;
number=200;
t=-number/2+1:number/2;
a=(1-2*(pi*f*t/fs).^2).*exp(-(pi*f*t/fs).^2);
s=awgn(a,10);  
snr=10*log(norm(a)/norm(s-a))
回复
分享到:

使用道具 举报

发表于 2010-11-17 11:07 | 显示全部楼层
个人觉得首先你的程序出现了错误,信噪比的添加应该写成这样s=awgn(a,10,'measured');按照公式计算后的信噪比与10还有一些差别11dB左右,你可以看matlab中信噪比的计算是如何定义的(用which awgn 找到awgn.mat文件),个人认为信噪比只是一个信号与噪声的度量指标,意义不是很大,也就是说信噪比大的不一定说降噪效果就好,还应该看主流形是否与纯净信号的主流形特征相似。附带的程序中计算的信噪比为 更接近10dB。以上均属于个人观点,有不足之处希望各位不吝赐教。

信噪比计算.rar

1.15 KB, 下载次数: 46

 楼主| 发表于 2010-11-19 21:25 | 显示全部楼层
非常感谢,只是还是不明白
switch m
case 'rm'; sig1=remmean(sig1); sig2=remmean(sig2);
case 'rv'; sig1=remmean(sig1); sig2=remmean(sig2); sig1=sig1/std(sig1); sig2=sig2/std(sig2);
end

value=20*log10(norm(sig1)/norm(sig1-sig2));
看了看remmean文件,为什么是将信号矩阵减去所求的中值后的新矩阵来运算?newVectors = vectors - meanValue * ones (1,size (vectors, 2));

还有到底是20倍的log还是10倍的?
发表于 2010-11-20 18:47 | 显示全部楼层
回复 3 # WJzhengdong 的帖子

以上所说的问题,我的确还没有弄明白,按照信噪比的定义(有用信号的功率与噪声功率的比),的确不用去均值处理,log前面的也是10倍的关系(这程序是从别人那拷过来的),但是也不能过分拘泥于信噪比的计算,你用同一种方法计算降噪前后的信噪比,如果有信噪比有提高,还是可以说明你的降噪算法有一定的可取之处。
发表于 2010-11-20 19:03 | 显示全部楼层
回复 3 # WJzhengdong 的帖子

我看了一下这篇论文,其中的SNR是这样定义的10*log(纯净信号的方差/噪声信号的方差)。这样就能解释为什么要去均值,为什么要乘以20而不是乘以10了。去均值后的norm()是标准差 截图00.png ,这篇文章是《Iterative SVD method for noise reduction of low-dimensional chaotic time series》
 楼主| 发表于 2010-11-24 21:20 | 显示全部楼层
这下明白了,非常感谢啊。这几天由于别的事情忙碌,未能及时回复。再次表示感谢了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-26 22:36 , Processed in 0.080732 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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