C4.求解FIR滤波器
介绍
有限冲击响应FIR滤波器属于线性时不变系统,最大的特点是频率响应具备线性相位,为此FIR滤波器在信号滤波中得到广泛应用。其中,FIR滤波器的单位脉冲响应具备以下条件:
$$
h(n)=0, \quad n<0, n \geq N
$$
当系统输出为x(n) 时,系统输出为:
$$
y(n)=\sum_{m=0}^{N-1} h(m) x(n-m)
$$
为此,使用matlab中的conv卷积函数就可以求解FIR滤波器的输出。
matlab程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| clear; close all;
x = sin(2*pi*0.3*(0:127)/10) + sin(2*pi*2.4*(0:127)/10); figure;plot(0:127,x);xlim([0 127]);grid on;xlabel('n');ylabel('系统输入信号x(n)');title('系统输入信号x(n)');
h(1:20)=(1:20);h(21)=21;h(22:41)=(20:-1:1); figure;plot(0:40,h);ylim([0 21]);grid on;xlabel('n');ylabel('h(n)');title('系统单位脉冲响应h(n)');
hf = freqz(h,1,1024); xf = freqz(x,1,1024); figure;subplot(2,1,1); plot((0:1023)*10/2048,20*log10( abs(hf)/max(abs(hf)) ));grid on;xlabel('kHz');ylabel('系统频率响应');title('系统频率响应'); subplot(2,1,2); plot((0:1023)*10/2048, 20*log10(abs(xf)/max(abs(xf))) );grid on;xlabel('kHz');ylabel('输入信号频谱');title('输入信号频谱');
y = conv(h,x); figure;plot(0:167,y);grid on;xlim([0 167]);xlabel('n');ylabel('y(n)');title('系统输出');
|
运行截图
分析
C7.相关函数在噪声中检测信号的应用
介绍
首先产生一路高斯白噪声(均值为0,方差为1),再在单载波信号上叠加上噪声,然后求被噪声污染后的自相关函数。
程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| xn=randn(1,200); rnn=xcorr(xn,xn); figure;subplot(2,1,1);plot(0:199,xn);grid on; title('噪声的时域图');ylabel('N(n)');xlabel('n'); subplot(2,1,2);plot(0:199,rnn(200:399)/200);grid on; title('噪声的自相关函数图');ylabel('rn(m)');xlabel('m');
SNR=-3; A=sqrt(2*10^(SNR/10)); x1=A*sin(pi*0.165*(0:199)); x=x1+randn(1,200); y=xcorr(x,x); y=y/200; figure;subplot(3,1,1);plot(0:199,x1);grid on; title('信号的时域图');ylabel('s(n)');xlabel('n'); subplot(3,1,2);plot(0:199,x);grid on;title('信号加噪声时域图');ylabel('x(n)');xlabel('n'); subplot(3,1,3);plot(0:99,y(200:299));grid on;title('信号加噪声 相关函数图');ylabel('r(m)');xlabel('m');
|
运行截图
分析
高斯白噪声的自相关函数只在m=0处有值(等于噪声功率),其余m值处近似为零,因此对被污染的信号求其自相关函数即可检测出原信号。