4)编写MATLAB程序,计算在的加性高斯白噪声环境下,
幅度为0.3,频率为10Hz的
正弦信号通过50Hz低通滤波器的情况(考虑采样时间为Ts=1ms)
,绘制输出信号波形与功率谱。
提示:低通滤波器可以采用数字滤波器
编写.m文件rand_noise
高斯白噪声的均值为 0,噪声平均功率 ^2= 0*B=fs/2,其中 B 是叠加于信道的高斯白噪声的带宽, 0为单边功率谱密度。
fs=1000; %采样频率为 1000Hz
x=(0:1/fs:2);
产生10Hz正弦波: y=0.3*sin(2*pi*10*x); %频率10HZ的正弦信号
叠加高斯噪声
a=0; %高斯白噪声的均值为 0
b=sqrt(N0*fs/2);%噪声平均功率σ^2=N0*B=N0*fs/2,B为高斯白噪声的带宽
n=2/1*Fs+1;样本点数
noise=a+b*randn(1,n); %高斯白噪声
y_noise=y+noise; %加入高斯噪声
正弦信号y=0.3*sin(2*10*pi*x)
0.5
-0.5
0.5
-0.5
0.5
-0.500.20.40.60.811.21.41.61.82高斯白噪声00.20.40.60.811.21.41.61.82加入高斯白噪声后的正弦信号00.20.40.60.811.21.41.61.82
wc=50*2/Fs; %得到中心截止频率wc
[Bz,Az]=butter(10,wc,'low'); %得出数字滤波器系统函数的分子,分母系数矩阵B,A
[Hw,w]=freqz(Bz,Az,100); %求频率响应函数,横坐标0-pi
figure(3);plot(w/pi,abs(Hw));,title('50Hz,0.1滤波器频率响应函数');
Y = filter(Bz,Az,y_noise); %讲系统函数的分子分母矩阵输入到函数filter中 subplot(3,1,2);plot(Y);title('滤波后的正弦信号');
R=xcorr(y_noise)/(n*Fs/2); %得到自相关函数
Ns=n*2-1;
Pxx=fft(R,Ns);
%自相关函数fft变换后即为功率谱密度函数
50Hz,0.1滤波器频率响应函数
2
1
0.5
-0.5
-50
-10000.10.20.30.40.50.60.70.80.91滤波后的正弦信号05001000150020002500正弦波除噪后的功率谱01002003004005006007008009001000
%或直接调用函数
%[Pxx1,f1]=pmtm(Y,2,500,Fs);figure(7);plot(f1,10*log10(abs(Pxx1)));
-20
-40
-60
-80
-100
-120050100150200250300350400450500