怎样在MATLAB程序中加入干扰信号

怎样在MATLAB程序中加入干扰信号,第1张

一般干扰信号就是由随机数产生函数rand或randn来生成与输入信号同维数的信号,两者叠加,作为加性噪声引入。当然,要分清楚干扰信号的类型,主要是要求创建的随机序列的方差和均值要符合你要求的干扰噪声。

以高斯噪声为例:若有用信号s(n)的最大幅度am,要求得到的信噪比为p,则p=10log10[(am^2)/b^2],用这个公式反推出高斯噪声的方差b^2,若s(n)单通道实信号,则Matlab程序就是x=s+b*randn(size(s));若s(n)是正交双通道信号,则Matlab程序就是x=s+b/sqrt(2)*randn(size(s))。

如果s(n)是一个N行、2列的复信号,前后两列各表示实部和虚部,则b/sqrt(2)*randn(size(s))产生的也是N×2的高斯分布噪声,实部和虚部的方差均为b/sqrt(2)。实部和虚部分别产生也可以,但不能用b*randn(size(s))。第一,如果这样产生噪声,那么最终信号的信噪比应该用p=10log10[(am^2)/(2*b^2)];第二,不能用size(s),应该用size(c),c为s(n)的实(虚)部列矢量的长度。

Matlab中计算信噪比方式:

%===========================Happy===================================%

function snr=SNR(I,In)

% 计算信号噪声比函数

% by Qulei

% I :original signal

% In:noisy signal(ie. Original signal + noise signal)

% snr=10*log10(sigma2(I2)/sigma2(I2-I1))

[row,col,nchannel]=size(I)

snr=0

if nchannel==1%gray image

Ps=sum(sum((I-mean(mean(I))).^2))%signal power

Pn=sum(sum((I-In).^2))%noise power

snr=10*log10(Ps/Pn)

elseif nchannel==3%color image

for i=1:3

Ps=sum(sum((I(:,:,i)-mean(mean(I(:,:,i)))).^2))%signal power

Pn=sum(sum((I(:,:,i)-In(:,:,i)).^2))%noise power

snr=snr+10*log10(Ps/Pn)

end

snr=snr/3

end

%===================================================================%

转:

符号的平均功率 每比特信号能量/符号周期

SNR信噪比 = ------------------------- = ----------------------------------------- =

噪声的平均功率 噪声单边功率普密度*符号带宽

Eb/T 在限带情况下 T*B=1 Eb

= ---------- ================== ---------

N0*B N0

实际系统中噪声的单边功率普密度N0受温度和常数K决定的,在一定条件下为固定值;信噪比与信号能量的强弱成正比。在仿真中,为了简化模型,通常采用固定输入信号幅度,改变N0来起到SNR的变化。

其中的Eb是在相干接收条件下解调后信号能量,而系统接收的信噪比通常是加在接收输入端,也就是解调前。为了令Eb在解调前后的能量统一,在发送端必须采用能量的归一化。

归一化方法:

_ x(n)

x(n) =-------------------------- n属于(1,N) N为1bit内采样点数

sqrt(Sum(x(n)^2))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11958184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存