- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《awgn白噪声添加原理
在matlab中无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。即:wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。根据awgn的实现代码可以知道”向已知信号添加某个信噪比(SNR)的高斯白噪声“,即:awgn(x,snr,’measured’,linear’),命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。这里涉及三个问题:在awgn这个函数中,SNR是如何计算的?什么是信号的强度?awgn函数具体是如何添加噪声的?awgn添加白噪声原理SNR就是信号的强度除以噪声的强度(或者信号功率与噪声功率之比),所以,首先来讲讲信号的强度。其实信号的强度指的就是信号的能量,在连续的情形就是对x平方后求积分,而在离散的情形自然是求和代替积分了。那么如何添加确定值的信噪比噪声呢?那么根据信噪比公式来推导:信噪比确定,即SNR是已知的。由于无噪声信号signal是已知的,所以它的信号功率是已知的。所以可以求得noisePower然后根据已知的signal构造相应的噪声noise先生成一个与signal相同长度的随机信号。noise0=randn(size(signal));noise1=noise0-mean(noise0);%减去均值将noise1的按比例进行变换根据方差和标准差公式,可以知道std(noise0)就是noise0的标准差,这个很好求取。noisePower是noise的噪声强度,根据上面知道,noise是有noise1按比例变换来的。由于noise1是由noise0减去均值获得。因此,noise1的功率就是noise0的方差。即噪声强度对应的是方差,属于同一个概念。事实上,一个数组减去均值后,其方差和标准差与该数组减去2个均值或者多个常数的方差和标准差相同。即std(noise0-mean(noise0))=std(noise0-2*mean(noise0))所以噪声强度noisePower对应的是noise未减去均值后的方差,因此noise1未减去均值的原始噪声为noise0.所以其中std(noise0)=std(noise1).例子验证awgn生成信号和噪声%-----------------construct simulation signalfs=5000;f=10;k=1024;n=1:k;X=5*sin(2*pi*f/fs*n);% 原始信号% y1=y0+2*(rand(1,k)-0.5); % 噪声信号%------------------------------denoiseY = awgn(X,10,measured); %加入信噪比为10db的噪声,加入前预估信号的功率(强度)sigPower = sum(abs(X).^2)/length(X) %求出信号功率noisePower=sum(abs(Y-X).^2)/length(Y-X) %求出噪声功率SNR=10*log10(sigPower/noisePower) %由信噪比定义求出信噪比,单位为dbsigPower = 12.2256noisePower = 1.2742SNR = 9.8204 【大小跟10db差不多】自定义的噪声函数function [Y,NOISE] = noisegen(X,SNR) % 把白噪声叠加到信号上去: % noisegen add white Gaussian noise to a signal. % [Y, NOISE] = NOISEGEN(X,SNR) adds white Gaussian NOISE to X. The SNR is in dB. NOISE0=randn(size(X)); NOISE=NOISE0-mean(NOISE0);%减去均值后,其噪声功率相当于原来的方差 sigPower = 1/length(X)*sum(X.*X); %求出信号功率noise_variance = sigPower / ( 10^(SNR/10) ); NOISE=sqrt(noise_variance)/std(NOISE0)*NOISE; Y=X+NOISE;noisePower=1/length(NOISE)*sum(NOISE.*NOISE); %求出噪声功率SNR=10*log10(sigPower/noisePower) %由信噪比定义求出信噪比,单位为dbfigureplot(Y,m);hold onplot(X,k)% title(Sinusoidal Signal Mixed with Noise)% xlabel(Data
文档评论(0)