![求高手帮忙!关于Matlab和白噪声的编程!![加急] 我是一matlab新手,老师布置了下面这题作业大家帮忙啊!,第1张 求高手帮忙!关于Matlab和白噪声的编程!![加急] 我是一matlab新手,老师布置了下面这题作业大家帮忙啊!,第1张](/aiimages/%E6%B1%82%E9%AB%98%E6%89%8B%E5%B8%AE%E5%BF%99%EF%BC%81%E5%85%B3%E4%BA%8EMatlab%E5%92%8C%E7%99%BD%E5%99%AA%E5%A3%B0%E7%9A%84%E7%BC%96%E7%A8%8B%EF%BC%81%EF%BC%81%5B%E5%8A%A0%E6%80%A5%5D+%E6%88%91%E6%98%AF%E4%B8%80matlab%E6%96%B0%E6%89%8B%EF%BC%8C%E8%80%81%E5%B8%88%E5%B8%83%E7%BD%AE%E4%BA%86%E4%B8%8B%E9%9D%A2%E8%BF%99%E9%A2%98%E4%BD%9C%E4%B8%9A%E5%A4%A7%E5%AE%B6%E5%B8%AE%E5%BF%99%E5%95%8A%EF%BC%81.png)
m=100;n=100;%%%m设定循环次数,算多少次X的平均数, n设定产生多少个N(0,1)个随机数w;
x=[];
for i=1 : m;
w=normrnd(0,1,1,n); %%%matlab直接生成正态分布随机数
x(i)=mean(sin(w+pi/6)+w);
end;
A=mean(x) %%%A为最后估计值,n,m设置越大,应该越接近真值
当均值为零时,高斯白噪声的功率谱密度等于方差,此时的功率谱密度为双边功率谱密度,数字信号处理上面有关于这些的推导,n0/2是双边功率谱密度,n0为单边功率谱密度,一般都是考虑双边的。
高斯白噪声就是一组高斯分布的随机数,如下面是产生均值为noise_mu,方差为 noise_var的噪声。
noise_mu = 0;
noise_var =1;
noise = randn(size(signal)) sqrt(noise_var) + noise_mu;
以高斯噪声为例:若有用信号s(n)的最大幅度am,要求得到的信噪比为p,则p=10log10[(am^2)/b^2],用这个公式反推出高斯噪声的方差b^2,若s(n)单通道实信号,则Matlab程序就是x=s+brandn(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)。实部和虚部分别产生也可以,但不能用brandn(size(s))。第一,如果这样产生噪声,那么最终信号的信噪比应该用p=10log10[(am^2)/(2b^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=10log10(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=10log10(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+10log10(Ps/Pn);
end
snr=snr/3;
end
%===================================================================%
转:
符号的平均功率 每比特信号能量/符号周期
SNR信噪比 = ------------------------- = ----------------------------------------- =
噪声的平均功率 噪声单边功率普密度符号带宽
Eb/T 在限带情况下 TB=1 Eb
= ---------- ================== ---------
N0B N0
实际系统中噪声的单边功率普密度N0受温度和常数K决定的,在一定条件下为固定值;信噪比与信号能量的强弱成正比。在仿真中,为了简化模型,通常采用固定输入信号幅度,改变N0来起到SNR的变化。
其中的Eb是在相干接收条件下解调后信号能量,而系统接收的信噪比通常是加在接收输入端,也就是解调前。为了令Eb在解调前后的能量统一,在发送端必须采用能量的归一化。
归一化方法:
_ x(n)
x(n) =-------------------------- n属于(1,N) N为1bit内采样点数
sqrt(Sum(x(n)^2))
一组数据中的每个数分别减去这组数据的平均数的差的平方相加起来除以这组数据的个数,就是该组数据的方差,方差再开平方即为标准差如数据1、2、3、4、5平均数为3,则方差的计算公式为:[(1-3) ^ 2+(2-3) ^ 2+(3-3) ^ 2+(4-3) ^ 2+(5-3) ^ 2]÷ 5
可以使用如下的函数实现
R
=
normrnd(MU,SIGMA)
(生成均值为
MU,标准差为
SIGMA
的正态随机数)
R
=
normrnd(MU,SIGMA,m)
(生成
1×
m
个正态随机数)
R
=
normrnd(MU,SIGMA,m,n)
(生成
m
行
n
列的
m
×
n
个正态随机数)
假设输入信号为X,则给X加上一个均值为0,方差为1的高斯白噪声信号的方法为
Y=X+normrnd(0,1);
%
设置采样区间
k=(0:300)'/100;
%
计算采样值
x=sin(2pik);
%
施加高斯白噪声
y=awgn(x,0);
figure(1);
%
设置绘图位置,左下角距屏幕左200像素,下200像素,宽800像素,高300像素
set(gcf,'Position',[200,200,800,300]);
%
绘图网格12,左图绘制原始信号,右图绘制噪声信号
subplot(1,2,1),plot(k,x);
subplot(1,2,2),plot(k,y);
以上就是关于求高手帮忙!关于Matlab和白噪声的编程!![加急] 我是一matlab新手,老师布置了下面这题作业大家帮忙啊!全部的内容,包括:求高手帮忙!关于Matlab和白噪声的编程!![加急] 我是一matlab新手,老师布置了下面这题作业大家帮忙啊!、数字信号处理 输出噪声方差怎么求、如何产生高斯白噪声谢谢!我要具体的程序,急用!谢谢了!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)