声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2579|回复: 4

[综合讨论] 求助:计算wnoise产生的信号的SNR出错!

[复制链接]
发表于 2011-6-7 21:13 | 显示全部楼层 |阅读模式

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

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

x
[x1,x2]=wnoise(2,10,7);%x1是标准方差为7的原始信号??x2是加上高斯白噪声的信号,信噪比为7^2??
snr=SNR_singlech(x1,x2);%SNR_singlech()是计算信号信噪比的一个函数。

运行结果:snr=17.0662,信噪比不是7^2吗?
希望大家指教
回复
分享到:

使用道具 举报

发表于 2011-8-22 00:38 | 显示全部楼层
回复 1 # vicen 的帖子

真的有点不想回!
一则个人水平/专业有限, 没玩过这函数, 二则LZ应该知道:@)
试了下wnoise这个函数, 猜测它只是进行信号和噪声的幅度或者能量之比, 并没有取log
  1. snr=7; [x,xn]=wnoise(2,10,snr); subplot(2,1,1); plot(x);subplot(2,1,2); plot(xn)
  2. ns=xn-x; ns_energy=sqrt(sum((ns).^2)/1024); x_energy=sqrt(sum((x).^2)/1024);
  3. x_energy/ns_energy
复制代码
具体建议直接看看wnoise这个函数
发表于 2011-8-27 12:15 | 显示全部楼层
本帖最后由 ChaChing 于 2011-8-27 12:17 编辑

感觉比较完整性

wnoise这个函数只是进行信号和的幅度或者能量之比,并没有取log。
1.刚发现原猜测sqrt(sum((ns).^2)/2^n)有些小误差, 未减去mean值, 除以n, 不是n-1
2.找空档详细看下wnoise.m及help档, 发现

[X,XN] = wnoise(FUN,N,SQRT_SNR) returns a test vector X as above, rescaled such that std(X) = SQRT_SNR.

所以程序中係控制信号X的std是SQRT_SNR3, 而程序中欲控制噪声的std是1, 但產生的方式没有刚好为1(原因见1F说明)

非真正讯号专业, 希望个人解读正确
  1. snr=7; n=10; [x,xn]=wnoise(2,n,snr); subplot(2,1,1); plot(x); subplot(2,1,2); plot(xn)
  2. ns=xn-x; ns_energy=std(ns); x_energy=std(x);
  3. ns_energy1=sqrt(sum((ns-mean(ns)).^2)/(2^n-1)); x_energy1=sqrt(sum((x-mean(x)).^2)/(2^n-1));
  4. [ns_energy1 x_energy1 ns_energy x_energy (x_energy/ns_energy)^2]
复制代码

发表于 2012-4-19 16:16 | 显示全部楼层
回复 3 # ChaChing 的帖子

学习了!
再请教个问题代码wnoise(1,10,7)中第二个数字10是控制信号的长度,这样是1024个点。11的话就是2048个点,如果我想看频谱的话,因该如何傅里叶变换中的采样频率呢?
发表于 2012-4-21 16:21 | 显示全部楼层
我也不会
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-24 17:27 , Processed in 0.057147 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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