求信噪比计算公式
各位高手大家好!求各位给个信噪比的计算公式。数据都是现场故障数据,所以公式必须是原始信号和降噪后信号的关系。一下是我计算信噪比的公式,但是可能有错误!
function y=snr(x1,x2);%x1是原始信号,x2是降噪后信号
N=length(x1);
y1=sum(x1.^2);
y2=sum((x1-x2).^2);
y=10*log((y1/y2));
回复 #1 yhc310 的帖子
参考 http://forum.vibunion.com/forum/viewthread.php?tid=31086&extra=page%3D1%26amp%3Bfilter%3Ddigest回复 #1 yhc310 的帖子
eight大哥的文章我看过了,不过那个计算公式好像是原始信号和染噪信号的公式。我现在分析的都是实际的故障信号和降噪后信号的。eight以前也提过这个问题,这种情况可能只能做一个估计。上面那个函数是我看段晨东文章里面得到的。他的公式如下:
function y=snr(x1,x2);%x1是原始信号,x2是降噪后信号
N=length(x1);
y1=sum(x1.^2);
y2=sum(x1-x2);
y=10*log((y1/y2).^2);
但是由这个公式算出来的信噪比都是150多,我觉得有问题。故改为如下公式
function y=snr(x1,x2);%x1是原始信号,x2是降噪后信号
N=length(x1);
y1=sum(x1.^2);
y2=sum((x1-x2).^2);
y=10*log((y1/y2));
回复 #3 yhc310 的帖子
我觉得你的程序是正确的。 本帖最后由 VibInfo 于 2016-11-8 14:45 编辑原帖由 yhc310 于 2007-7-10 11:02 发表
各位高手大家好!求各位给个信噪比的计算公式。数据都是现场故障数据,所以公式必须是原始信号和降噪后信号的关系。
一下是我计算信噪比的公式,但是可能有错误!
function y=snr(x1,x2);%x1是原始信号,x2是 ...
就从你这段程序来看,你得到的是原始信号相对于被降噪噪声的能量比。信噪比在不同情况下定义也是不同的。一般说来,在论文中都会给出SNR的定义式。 你得到的是原始信号相对于被降噪噪声的能量比
function y=snr(x1,x2);%x1是原始信号,x2是降噪后信号
N=length(x1);
y1=sum(x1.^2);
y2=sum((x1-x2).^2);
y=10*log((y1/y2)); function y=snr(x1,x2);%x1是原始信号,x2是降噪后信号
y1=sum(x2.^2); %不是x1
y2=sum((x1-x2).^2);
y=10*log10((y1/y2)); %不是log()
[ 本帖最后由 VibrationMaster 于 2007-7-10 14:32 编辑 ] function y=snr(x1,x2);%x1是原始信号,x2是降噪后信号
y1=sum(x2.^2); %不是x1
y2=sum((x1-x2).^2);%y2=sum((abs(x1)-abs(x2)).^2)
y=10*log10((y1/y2)); %不是log()
回复 #8 jcsnwpu 的帖子
这应该和eight的精华贴 相得益彰啊http://forum.vibunion.com/forum/vi ... p%3Bfilter%3Ddigest
上面是仿真信号的信噪比总结
而本贴则是针对实际数据处理降噪后,来计算信噪比的程序。使得精华贴更完善了
function y=snr(x1,x2);%x1是原始信号,x2是降噪后信号
y1=sum(x2.^2); %不是x1
y2=sum((x1-x2).^2);%y2=sum((abs(x1)-abs(x2)).^2)
y=10*log10((y1/y2)); %不是log()
[ 本帖最后由 zhangnan3509 于 2007-8-2 21:25 编辑 ] 为什么我按这种方法计算出来的信噪比为负值呢? 那是你的系统降噪能力差吧 信噪比有什么用?
好像有问题
维纳滤波应该比谱减法的降噪效果好可用这里的SNR公式求得的都是相反的结果
怎么办啊? hao实在是太好了 大家好!