matlab中加性白噪声awgn函数主要格式是awgn(sig,SNR,sigpower)
对于sigpower参数进行了一下测试,其表示的作用应该是作为SNR参考0db的信号功率
以这段代码对参数作用进行测试:
----------------------------------------------------------------
t = 0:pi/64:10*pi;
sig = sqrt(200)*sin(t); %产生功率为100的信号
var0 = var(sig);
nsig1 = awgn(sig,10,0) - sig;
nsig2 = awgn(sig,10,'measured') - sig;
var1 = var(nsig1);
var2 = var(nsig2);
----------------------------------------------------------------
得到的结果是
var0 =
100
var1 =
0.0955
var2 =
10.4792
也就是说虽然信号功率为100,SNR设置为10,第二个的SNR仍然以0db作为基准生成了噪声,噪声方差约0.1。
而当采用参数measured的时候,噪声基准则以信号实际功率为准,生成了方差约10的噪声。
----------------------------------------------------------------
----------------------------------------------------------------
进一步验证可以通过下面代码确定,仅供参考:
----------------------------------------------------------------
sig = sqrt(200)*sin(t); %产生功率为100的信号
var0 = var(sig);
nsig1 = awgn(sig,10,10) - sig;
nsig2 = awgn(sig,10,20) - sig;
var1 = var(nsig1);
var2 = var(nsig2);
----------------------------------------------------------------
得到的结果是
var0 =
100
var1 =
1.0252
var2 =
10.6724
----------------------------------------------------------------
----------------------------------------------------------------
sig1 = sqrt(200)*sin(t); %产生功率为100的信号
sig2 = sqrt(2)*sin(t); %产生功率为1的信号
var0_1 = var(sig1);
var0_2 = var(sig2);
nsig1 = awgn(sig1,10,'measured') - sig1;
nsig2 = awgn(sig2,10,'measured') - sig2;
var1 = var(nsig1);
var2 = var(nsig2);
----------------------------------------------------------------
得到的结果是
var0_1 =
100
var0_2 =
1.0000
var1 =
9.7096
var2 =
0.0995