高斯白噪声matlab仿真 高斯白噪声函数
matlab中给图像加高斯白噪声
J = imnoise(I,'gaussian',0,20);
高斯白噪声matlab仿真 高斯白噪声函数
高斯白噪声matlab仿真 高斯白噪声函数
仔细看一下,其中参数应该是0.20,不是0,20
改一下就可以了
J = imnoise(I,'ge(1:52920)=d;aussian',0.20);
函数imnoise在为图像添加噪声之前,要将它转化为范围[0,1]内的double类图像,这里把20改为20/(cp=[];mod1=[];f=22pi;t=0:2pi/199:2pi;255)^2就可以了
在imshow函数加上第二个参数,为实际的灰度值范围,默认值为[0 1],所以看不到图像
用matlab作出x(k)=sin(2πk)的图像,并加入零均值方为1的高斯白噪声,并显示。
subplot(2,1,2)设k取值范围在0到1之间
y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位for i=0:0.01:1
x(round(i100+1))=sin(2pii); %得到x(k)
x=x+rand(1,length(k)); %加入高斯白噪声
plot(k,x) %绘图
matlab如何添加自定义信噪比的噪声信号?
Au=0.5; d=[Aucos(2pi8000t)]';e=zeros(52920,2);以高斯噪声为例:若有用信号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)
% 计算信号噪声比函数
% 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);
snr=snr/3;
%===================================================================%
转:
符号的平均功率 每比特信号能量/符号周期
SNR信噪比 = ------------------------- = ----------------------------------------- =
噪声的平均功率 噪声单边功率普密度符号带宽
Eb/T 在限带情况下 TB=1 Eb
= ---------- ================== ---------
实际系统中噪声的单边功率普密度N0受温度和常数K决定的,在一定条件下为固定值;信噪比与信号能量的强弱成正比。在仿真中,为了简化模型,通常采用固定输入信号幅度,改变N0均值滤波就可以了。来起到SNR的变化。
其中的Eb是在相干接收条件下解调后信号能量,而系统接收的信噪比通常是加在接收输入端,也就是解调前。为了令Eb在解调前后的能量统一,在发送端必须采用能量的归一化。
归一化方法:
_ x(n)
x(n) =-------------------------- n属于(1,N) N为1bit内采样点数
sqrt(Sum(x(n)^2))
对汉明编码不太了解,不过你的代码里for循环中没有地方体现了信噪比snr,从计算到画图全都是一样的过程。我的理解是code+randn(m,N)f(SNR)---这里落下了跟snr有关的幅度?
另外code+randn(m,N)>0.95得到的是一个0-1矩阵,rem(,2)似乎也没有特别的意义吧?
急求2PSK加入高斯白噪声后的已调信号及相干解调的MATLAB源代码!
方案一 滑动平均max=10;
g=zeros(1,max);
g=randint(1,max);%长度为max的随机二进制序列
for n=1:length(g);
if g(n)==0;
A=-ones(1,200);%每个值20这个个人感觉没法通过滤波滤去吧,楼上不是说了“高斯白噪声是指信号中包含从负无穷到正无穷之间的所有频率分量,且各频率分量在信号中的权值相同”,这样的话没法滤波掉吧。滤波是滤去高频或低频或中频段再或者某一频段的信号。0个点
else g(n)==1;
A=ones(1,200);
cp=[cp A]; %s(t),码元宽度200
mod1=[mod1 c];%与s(t)等长的载波信号,变为矩阵形式
figure(1);subplot(4,2,1);plot(cp);grid on;
axis([0 200length(g) -2 2]);title('二进制信号序列');
cm=[];mod=[];
for n=1:length(g);
if g(n)==0;
B=ones(1,200);%每个值200个点
c=cos(ft); %载波信号
else g(n)==1;
B=ones(1,200);
c=-cos(ft); %载波信号
cm=[cm B]; %s(t),码元宽度200
mod=[mod c]; %与s(t)等长的载波信号
tiaoz=cm.mod;%e(t)调制
figure(1);subplot(4,2,2);plot(tiaoz);grid on;
axis([0 100length(g) -2 2]);title('2PSK调制信号');
figure(2);subplot(4,2,1);plot(abs(fft(cp)));
axis([0 100length(g) 0 400]);title('原始信号频谱');
figure(2);subplot(4,2,2);plot(abs(fft(tiaoz)));
axis([0 100length(g) 0 400]);title('2PSK信号频谱');
%带有高斯白噪声的信道
figure(1);subplot(4,2,3);plot(tz);grid on
figure(2);subplot(4,2,3);plot(abs(fft(tz)));
axis([0 200length(g) 0 400]);title('加入白噪声的2PSK信号频谱');
也是百度上看到的,共享一下吧
关于高斯白噪声的滤除(matlab)
f1=filter(bz,az,x2)plot(t,x2) %画出滤波前的时域图;如何用matlab滤掉信号中的小幅值白噪声?
c=cos(ft);%载波信号1. WGN:产生高斯白噪声
y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。
y = wgn(m,n,p,imp,state) 重置RANDN的状态。
在数值变量后还可附加一些标志性参数:
y = wgn(…,POendWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。
y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。
2. AWGN:在某一信号中加入高斯白噪声
y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度定为0dBW。如果x是复数,就加入复噪声。
y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。
y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。
均值滤波可以滤掉
方案二 小波去噪
matlab给添加高斯白噪声出现错误
tz=awgn(tiaoz,10);%信号tiaoz中加入白噪声,信噪比为10g=imnoise(f,'localvar',V)
将均值为0ylabel('fuzhi');,局部方为V的高斯噪声添加到图像f上,其中V是与f大小相同的一个数组,它包含了每一个点的理想方值。
用MATLAB产生零均值高斯白噪声时为什么要加上这句程序呢?
k=0:0.01:1;一般这种
randn(尺寸(x));如果信号x(矢量),产生一个平均0,一个高斯白噪声的方,
噪声=
噪声信号
y=
x+噪声;
高斯白噪声的方有限制的吧,它这里是标准化了
想请教下产生DSB信号后加高斯白噪声,然后要求滤除噪声该怎么滤呢,谁有程序没啊,基于matlab ,谢谢
axis([0 200length(g) -2 2]);title('通过高斯白噪声信道后的信号');fs=22050; x1=wread('Windows XP 关机.w'); %添加你自己选的音乐。要求音乐文件与M文件放一起。
t=0:1/22050:(length(x1)-1)/22050;
x2=x1+e;%信号与高斯白噪声
wp=0.25pi;ws=0.i;
Rp=1;Rs=15;
Fs=22050;Ts=1/Fs;
wp1=2/Tstan(wp/2); %将模拟指标转换成数字指标
ws1=2/Tstan(ws/2);
[N,Wn]=butt[Bap,Aap]=zp2tf(Z,P,K);ord(wp1,ws1,Rp,Rs,'s'); %选择滤波器的小阶数
[Z,P,K]=buttap(N); %创建butterworth模拟滤波器
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换
[H,W]=freqz(bz,az); %绘制频率响应曲线
figure(1)
plot(WFs/(2pi),abs(H))
grid
xlabel('频率/Hz')
ylabel('频率响应幅度')
title('Butterworth')
figure(2)
subplot(2,1,1)
title('滤波前的时域波形');
plot(t,f1); %画出滤波后的时域图
title('滤波后的时域波形');
sound(f1,22050); %播放滤波后的信号
F0=fft(f1,1024);
f=fs(0:511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512))); %画出滤波前的频谱图
title('滤波前的频谱')
xlabel('Hz');
F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图
title('滤波后的频谱')
xlabel('Hz');
matlab如何产生强度为0.6的白噪声?
N0B % by QuleiN0y = wgn(1,100,0.6) %%% 产生1行100列 强度0.6的白噪声
参考:
1. WGN:产生高斯白噪声
y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。
y = wgn(m,n,p,imp,state) 重置RANDN的状态。
在数值变量后还可附加一些标志性参数:
y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。
y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。
2. AWGN:在某一信号中加入高斯白噪声
y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度定为0dBW。如果x是复数,就加入复噪声。
y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。
y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。
y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。
matlab中,给一个正弦信号加上一个均值为0,方为1的高斯白噪声信号,想用awgn函数,怎么做?
% I :original signal可以使用如下的函数实现
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);
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。