最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

白噪声(matlab)

来源:动视网 责编:小OO 时间:2025-09-29 19:05:42
文档

白噪声(matlab)

均匀分布的白噪声信号u(n),画出其波形,并检验其分布情况%-----------------------------------------------------------------%Totestrand.mandtogeneratethewhitenoisesignalu(n)%withuniformdistribution%产生均匀分布的随机白噪信号,并观察数据分布的直方图%------------------------------------------------------
推荐度:
导读均匀分布的白噪声信号u(n),画出其波形,并检验其分布情况%-----------------------------------------------------------------%Totestrand.mandtogeneratethewhitenoisesignalu(n)%withuniformdistribution%产生均匀分布的随机白噪信号,并观察数据分布的直方图%------------------------------------------------------
均匀分布的白噪声信号u(n),画出其波形,并检验其分布情况

%-----------------------------------------------------------------

% To test rand.m and to generate the white noise signal u(n) 

%                   with uniform distribution

% 产生均匀分布的随机白噪信号,并观察数据分布的直方图

%-----------------------------------------------------------------

clear;

N=50000;           

u=rand(1,N);       

u_mean=mean(u)     

power_u=var(u)     

subplot(211)       

plot(u(1:100));grid on;

ylabel('u(n)')     

xlabel('n')     

subplot(212)       

hist(u,50);grid on;         

ylabel('histogram of u(n)')    

思考:如何产生一均匀分布、均值为0,功率为0.01的白噪声信号u(n)

提示:u(n)~[a,b]上均匀分布,E(u)= (a+b)/2, 

% to generate the white noise signal u(n)  with uniform distribution

% and power p;

% 产生均匀分布的白噪信号,使均值为0,功率为p

%-----------------------------------------------------------------

clear;

p=0.01;

N=50000;

u=rand(1,N);

u=u-mean(u);

a=sqrt(12*p); 

u1=u*a;

power_u1=dot(u1,u1)/N  

subplot(211)

plot(u1(1:200));grid on;

ylabel('u(n)')     

xlabel('n')     

example2: 产生零均值功率0.1且服从高斯分布的白噪声

%-----------------------------------------------------------------

% to test randn.m and to generate the white noise signal u(n) 

%                   with Gaussian distribution and power p

% 产生高斯分布的白噪信号,使功率为p,并观察数据分布的直方图

%-----------------------------------------------------------------

clear;

p=0.1;

N=500000;

u=randn(1,N);

a=sqrt(p)

u=u*a; 

power_u=var(u)

subplot(211)

plot(u(1:200));grid on;

ylabel('u(n)');

xlabel('n')     

subplot(212)

hist(u,50);grid on; 

ylabel('histogram of u(n)');

example3: sinc信号

%-----------------------------------------------------------------

% to generate the sinc function.

% 产生一 sinc 函数;

%-----------------------------------------------------------------

clear;

n=200;

stept=4*pi/n;

t=-2*pi:stept:2*pi;

y=sinc(t);

plot(t,y,t,zeros(size(t)));

ylabel('sinc(t)');

xlabel('t=-2*pi~2*pi');

grid on;

example4: chirp信号

%-----------------------------------------------------------------

% to test chirp.m and to generate the chirp signal x(t) 

% 产生一 chirp 信号;

% chirp(T0,F0,T1,F1):

% T0: 信号的开始时间;    F0:信号在T0时的瞬时频率,单位为Hz;

% T1: 信号的结束时间;    F1:信号在T1时的瞬时频率,单位为Hz;

%-----------------------------------------------------------------

  clear;

  

  t=0:0.001:1;   

  x=chirp(t,0,1,125);

  plot(t,x);

  ylabel('x(t)')     

  xlabel('t')

%-------------------------------------------------------------------------

% to test specgram.m :估计信号谱图(SFFT)

%specgram(x,Nfft, Fs,window,Noverlap)

%x-信号;Fs抽样频率(2),Nfft做FFT长度(256), window窗函数(Hanning)

%Noverlap:估计功率谱时每一段叠合长度(0)

%-------------------------------------------------------------------------

clear;

t=0:0.001:1.024-.001; 

N=1024; 

% 得到两个Chirp 信号,并相加;

y1=chirp(t,0,1,350);

y2=chirp(t,350,1,0);

y=y1+y2;

subplot(211);plot(t,y1);

ylabel(' Chirp signal y1')

% 求两个Chirp 信号和的短时傅里叶变换;

[S,F,T]=specgram(y,127,1,hanning(127),126); 

subplot(212);

surf(T/1000,F,abs(S).^2)

view(-80,30);

shading flat;

colormap(cool);

xlabel('Time')

ylabel('Frequency')

zlabel('spectrogram')

还有diric信号(周期SINC)gauspuls(高斯信号)pulstran(脉冲串信号)tripuls三角波脉冲信号

example5:线性卷积

%-----------------------------------------------------------------

% to test conv.m 

% 计算两个序列的线性卷积;

%-----------------------------------------------------------------

clear;

N=5;

M=6;

L=N+M-1;

x=[1,2,3,4,5];

h=[6,2,3,6,4,2];

y=conv(x,h);

nx=0:N-1;

nh=0:M-1;

ny=0:L-1;

subplot(231);

stem(nx,x,'.k');xlabel('n');ylabel('x(n)');grid on;

subplot(232);

stem(nh,h,'.k');xlabel('n');ylabel('h(n)');grid on;

subplot(233);

stem(ny,y,'.k');xlabel('n');ylabel('y(n)');grid on;

思考:

设信号x(n)由正弦信号加均值为0白噪声所组成,正弦信号幅度为1,白噪声方差为1

SNR = 10LG(PS/PU) = -3dB,试分析信号;

%-----------------------------------------------------------------

% to test xcorr.m

% 求两个序列的互相关函数,或一个序列的自相关函数;

%-----------------------------------------------------------------

clear;

N=500;

p1=1;

p2=0.1;

f=1/8;

Mlag=50;

u=randn(1,N);

n=[0:N-1];

s=sin(2*pi*f*n);

% 混有高斯白噪的正弦信号的自相关

u1=u*sqrt(p1);

x1=u1(1:N)+s;

rx1=xcorr(x1,Mlag,'biased');

subplot(221);

plot(x1(1:Mlag));

xlabel('n');

ylabel('x1(n)');grid on;

subplot(223);

plot((-Mlag:Mlag),rx1);grid on;

xlabel('m');ylabel('rx1(m)');

% 高斯白噪功率由原来的p1减少为p2,再观察混合信号的自相关

u2=u*sqrt(p2);

x2=u2(1:N)+s;

rx2=xcorr(x2,Mlag,'biased');

subplot(222);

plot(x2(1:Mlag));

xlabel('n');ylabel('x2(n)');grid on;

subplot(224);

plot((-Mlag:Mlag),rx2);

grid on;xlabel('m');ylabel('rx2(m)');

用乘同余法产生(见光盘 FLch2bzsheg2.m)

1编程如下:

A=6;  x0=1;  M=255;  f=2;   N=100;  %初始化;

x0=1;  M=255;

for k=1: N           %乘同余法递推100次;

   x2=A*x0;        %分别用x2和x0表示xi+1和xi-1;

  x1=mod (x2,M);    %取x2存储器的数除以M的余数放x1(xi)中;

   v1=x1/256;       %将x1存储器中的数除以256得到小于1的随机数放v1中;

   v(:,k)=(v1-0.5 )*f;  %将v1中的数()减去0.5再乘以存储器f中的系数,存放在矩阵存储器v的第k列中,v(:,k)表示行不变、列随递推循环次数变化;     

   x0=x1;           % xi-1= xi;

   v0=v1;

end                 %递推100次结束;

v2=v                %该语句后无‘;’,实现矩阵存储器v中随机数放在v2中,且可直接显示在MATLAB的window中;

k1=k;

%grapher             %以下是绘图程序;

k=1:k1;

plot(k,v,k,v,'r');

xlabel('k'), ylabel('v');tktle(' (-1,+1)均匀分布的白噪声')

② 程序运行结果如图2.6所示。

图2.6  采用MATLAB产生的(-1,+1)均匀分布的白噪声序列

③ 产生的(-1,1)均匀分布的白噪声序列

在程序运行结束后,产生的(-1,1)均匀分布的白噪声序列,直接从MATLAB的window界面中copy出来如下(v2中每行存6个随机数):

v2 =

   -0.9531   -0.7188    0.6875   -0.8359   -0.0156    0.9219

    0.5703    0.4531   -0.2500   -0.4844    0.1016   -0.3672

    0.8047   -0.1328    0.2188    0.3359   -0.9531   -0.7188

    0.6875   -0.8359   -0.0156    0.9219    0.5703    0.4531

   -0.2500   -0.4844    0.1016   -0.3672    0.8047   -0.1328 

    0.2188    0.3359   -0.9531   -0.7188    0.6875   -0.8359

   -0.0156    0.9219    0.5703    0.4531   -0.2500   -0.4844

    0.1016   -0.3672    0.8047   -0.1328    0.2188    0.3359 

   -0.9531   -0.7188    0.6875   -0.8359   -0.0156    0.9219 

    0.5703    0.4531   -0.2500   -0.4844    0.1016   -0.3672  

    0.8047   -0.1328    0.2188    0.3359   -0.9531   -0.7188

    0.6875   -0.8359   -0.0156    0.9219    0.5703    0.4531

   -0.2500   -0.4844    0.1016   -0.3672    0.8047   -0.1328

    0.2188    0.3359   -0.9531   -0.7188    0.6875   -0.8359

   -0.0156    0.9219    0.5703    0.4531   -0.2500   -0.4844

    0.1016   -0.3672    0.8047   -0.1328    0.2188    0.3359

   -0.9531   -0.7188    0.6875   -0.8359

显然,只要在例2.2程序的初始化部分中给N=300,f=6,运行程序就可以得到如图2.3所示的(-3,3)的白噪声过程.

①编程如下:

 A=6;  x0=1;  M=255;  f=6;   N=300;  %初始化;

x0=1;  M=255;

for k=1: N           %乘同余法递推100次;

   x2=A*x0;        %分别用x2和x0表示xi+1和xi-1;

  x1=mod (x2,M);    %取x2存储器的数除以M的余数放x1(xi)中;

   v1=x1/256;       %将x1存储器中的数除以256得到小于1的随机数放v1中;

   v(:,k)=(v1-0.5 )*f;  %将v1中的数()减去0.5再乘以存储器f中的系数,存放在矩阵存储器v的第k列中,v(:,k)表示行不变、列随递推循环次数变化;     

   x0=x1;           % xi-1= xi;

   v0=v1;

end                 %递推100次结束;

v2=v                %该语句后无‘;’,实现矩阵存储器v中随机数放在v2中,且可直接显示在MATLAB的window中;

k1=k;

%grapher             %以下是绘图程序;

k=1:k1;

plot(k,v,k,v,'r');

xlabel('k'), ylabel('v');tktle(' (-1,+1)均匀分布的白噪声')

② 程序运行结果如图2.3所示。

图2.3 白噪声过程

文档

白噪声(matlab)

均匀分布的白噪声信号u(n),画出其波形,并检验其分布情况%-----------------------------------------------------------------%Totestrand.mandtogeneratethewhitenoisesignalu(n)%withuniformdistribution%产生均匀分布的随机白噪信号,并观察数据分布的直方图%------------------------------------------------------
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top