MATLAB环境下的正弦信号及高斯白噪声仿真程序说明
一、信号的产生及时域观察
1、设定正选信号的频率为10HZ,抽样频率为100HZ; 2、设定N(0,0.25)高斯白噪声,及噪声功率为0.25W; 3、最后将噪声叠加到正弦信号上,观察其三者时域波形。
二、信号频谱及白噪声功率谱的求解与观察
1、对原正弦信号直接进行FFT,得出其频谱;
2、求白噪声的自相关函数,随机序列自相关函数的无偏估计公式为:
1Nm1rxx(m)x(n)x(nm) 0mN1 Nmn0^rxx(m)rxx(m) 0mN1
对所求自相关函数进行FFT变换,求的白噪声的功率谱函数。
^^三、仿真结果:
附源程序代码:
fs=100; fc=10;
x=(0:1/fs:2); n=201;
y1=sin(2*pi*fc*x); %原正弦信号,频率为10 a=0;b=0.5; %均值为a,方差为b^2 subplot(3,2,1); plot(x,y1,'r');
title('y=sin(20pi*x)'); ylabel('y');
xlabel('x/20pi'); grid;
y2=a+b*rand(1,n); %均匀白噪声 subplot(3,2,2); plot(x,y2,'r');
title('N(0,0.25)的均匀白噪声'); ylabel('y');
xlabel('x/20pi'); grid;
y=y1+y2; %加入噪声之后的信号 subplot(3,2,3); plot(x,y,'r');
title('叠加了均匀白噪声的sinx'); ylabel('y');
xlabel('x/20pi'); grid;
FY=fft(y); %傅里叶变换得出频谱函数 FY1=fftshift(FY); %频谱校正 f=(0:200)*fs/n-fs/2; subplot(3,2,4); plot(f,abs(FY1),'r'); title('函数频谱图'); ylabel('F(jw)'); xlabel('w'); grid;
%求均匀白噪声的自相关函数 m=50;
i=-0.49:1/fs:0.49;
for j=1:m
R1(j)=sum(y2(1:n-j-1).*y2(j:199),2)/(n-j);%无偏自相关函数的估计 R1x(49+j)=R1(j); R1x(51-j)=R1(j); end
subplot(3,2,5); plot(i,R1x,'r');
%plot(leg*1/fs,R1x,'r');
title('白噪声自相关函数图'); ylabel('R1x'); xlabel('x'); grid;
Fy2=fft(R1x); %傅里叶变换得出白噪声功率谱函数 Fy21=fftshift(Fy2); %功率谱校正 f=(0:98)*fs/99-fs/2; subplot(3,2,6);
plot(f,abs(Fy21),'r'); axis([-50 50 -0.5 6]);
title('白噪声功率谱函数图'); ylabel('F(R1x)'); xlabel('w'); grid;
%求正弦波加均匀白噪声的自相关函数 m=50;
i=-0.49:1/fs:0.49; for j=1:m
R2(j)=sum(y(1:n-j-1).*y(j:199),2)/(n-j);%无偏自相关函数的估计 R2x(49+j)=R2(j); R2x(51-j)=R2(j); end
subplot(3,2,5); plot(i,R2x,'r');
%plot(leg*1/fs,R2x,'r');
title('正弦波加白噪声自相关函数图'); ylabel('R2x'); xlabel('x'); grid;
Fy2=fft(R2x); %傅里叶变换得出正弦波加白噪声功率谱函数 Fy21=fftshift(Fy2); %功率谱校正 f=(0:98)*fs/99-fs/2; subplot(3,2,6);
plot(f,abs(Fy21),'r'); axis([-50 50 -0.5 6]);
title('白噪声功率谱函数图'); ylabel('F(R2x)'); xlabel('w'); grid;
因篇幅问题不能全部显示,请点此查看更多更全内容