vicen 发表于 2011-6-7 21:13

求助:计算wnoise产生的信号的SNR出错!

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

运行结果:snr=17.0662,信噪比不是7^2吗?
希望大家指教{:{19}:}{:{19}:}

ChaChing 发表于 2011-8-22 00:38

回复 1 # vicen 的帖子

真的有点不想回!
一则个人水平/专业有限, 没玩过这函数, 二则LZ应该知道:@)
试了下wnoise这个函数, 猜测它只是进行信号和噪声的幅度或者能量之比, 并没有取logsnr=7; =wnoise(2,10,snr); subplot(2,1,1); plot(x);subplot(2,1,2); plot(xn)
ns=xn-x; ns_energy=sqrt(sum((ns).^2)/1024); x_energy=sqrt(sum((x).^2)/1024);
x_energy/ns_energy具体建议直接看看wnoise这个函数

ChaChing 发表于 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档, 发现

= 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说明)

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


luningxia 发表于 2012-4-19 16:16

回复 3 # ChaChing 的帖子

学习了!
再请教个问题代码wnoise(1,10,7)中第二个数字10是控制信号的长度,这样是1024个点。11的话就是2048个点,如果我想看频谱的话,因该如何傅里叶变换中的采样频率呢?

wfyyf 发表于 2012-4-21 16:21

{:{20}:}我也不会
页: [1]
查看完整版本: 求助:计算wnoise产生的信号的SNR出错!