第二部分:实际上机。
一、 自适应滤波器的工作原理。
自适应滤波器是相对固定滤波器而言的。固定滤波器属于经典滤波器,它滤波的频率是固定的。而自适应滤波器滤波的频率则是自动适应输入信号而变化的,所以其适用范围更广。
在没有任何关于信号和噪声的先验知识的条件下,自适应滤波器利用前一时刻已获得的滤波器参数等结果来自动调节现时刻的滤波器参数,以适应信号和噪声未知或随机变化的统计特性,从而实现最优滤波。自适应滤波器实质上就是一种能调节其自身传输特性以达到最优化的维纳滤波器。自适应滤波器一般由两部分组成:
滤波器结构和调整滤波器系数的自适应算法。自适应滤波器的结构采用fir 或iir 结构均可,但由于iir 滤波器存在稳定性问题,因此一般采用fir 滤波器作为自适应。
系统示意图如图1所示。
图1自适应滤波算法。
自适应滤波器主要是根据其输入的统计特性进行设计的。自适应滤波器的算法则以各种判据条件作为推算基础。通常有两种判据条件:
最小均方误差判据和最小二乘方判据。lms 算法是以最小均方误差为判据的最典型的算法,也是一种易于实现、性能稳健、应用广泛的算法。lms 算法最显著的特点是它的简单性,此外它不需要计算有关的相关函数,也不需要矩阵求逆运算。
lms 算法是一种有用的估计梯度的方法,其目的是通过调整系数,使输出误差序列e(n)=d(n)-y(n)的均方值最小化,并且根据这个判据来修改权系数。其中误差序列的均方值又叫“均方误差” (mean sqluare error,mse)。一般来说,此算法包含两个基本过程:
一是滤波过程,包括计算滤波器输出对输入信号的响应和通过比较输出结果与期望响应产生估计误差。二是自适应过程,即根据估计误差自动调整滤波器参数。这两个过程一起工作组成一个反馈环。
采用自适应滤波器技术可以实现信噪分离,也就是去噪。用matlab 工具编程如下:
程序**:samples_ per_ period=40;%周期采样频率。
n=10*samples_per_period-1;%总采样次数。
signal=sin(2*pi*0.02*[0:n-1]);初始输入信号。
figure;%作图1 的第一子图。
subplot(2,1,1);
plot(signal);
grid;title('自适应滤波器的理想输入');
nvar=0.5;%噪声方差。
noise=nvar*randn(1,n);%噪声信号。
x=signal+noise;%带加性噪声的输入信号。
delayx=[0 x];%输入信号延时。
signal=[signal 0];
m=32;%滤波器长度。
mu=0.035;%迭代步长。
subplot(2,1,2);%作图1 的第二子图。
plot(delayx);
grid;title('自适应滤波器的噪声输入');
initial_ status=initlms (zeros(1,m),mu);%滤波器设初值。
y,e,initial_status]= adaptlms (x,signal, initial _ status);%lms 自适应滤波器输出。
figure;
plot(0:n-1,y,'.0:n,signal,'k');
grid;title('**信号与实际信号的比较');
legend('**信号','实际信号');
m=32图2
图3m=16图4图5
m=64图6
图7结论:可以看出,lms 自适应滤波器在噪声消除方面具有很好的效果,且在信噪比较小的情况下也可以完成一定条件下的数字滤波任务,但此法仍然有许多需要改进的地方,如在信噪比较小的时候,需要滤波器的长度比较大,这样滤波器在实时处理方面受到很大限制。
二、信号的插值与抽取。
令,,即每个周期内有16个点,利用信号的抽取与插值内容实现下述抽样率的转换。
1) 作l=3倍的插值;
2) 作m=4倍的抽取;
3) 作l/m=3/4倍的抽样率转换。
答:程序及结果如下所示:
1)程序**如下:
n=1:64;
x=sin(2*pi*n*1/16);
y=zeros(1,64);
for m=1:64
if mod(m,3)==0
y(m)=x(m/3);
elsey(m)=0;
endend
n=41;wc=pi/3;
n=0:n-1;r=(n-1)/2;
hn=fir1(n-1,wc/pi,hamming(n));
yn=conv(hn,y);
figure(1),subplot(211)
stem(x),title('原始信号x(n)')xlabel('n')
subplot(212)
stem(yn加hamming窗后的插值信号。
title('作3倍插值后的信号'),xlabel('n')
figure(2),subplot(211)
plot(hn);grid
title('3倍插值所用滤波器的h(n)')
xlabel('n'),ylabel('h(n)')
hw=fft(hn,512);
w=2*[0:511]/512;
subplot(212);
plot(w/2*pi,20*log10(abs(hw)))grid
title('3倍插值所用滤波器的幅频响应')图8图9
2)程序**如下:
n=1:64;
x=sin(2*pi*n*1/16);
figure(1),subplot(211)
stem(x),title('原始信号x(n)')xlabel('n')
n=33;wc=pi/4;
n=0:n-1;r=(n-1)/2;
hn=fir1(n-1,wc/pi,chebwin(n));
y1=conv(x,hn);
y=zeros(1,20);
for m=1:20
y(m)=y1(1+(m-1)*4);
endsubplot(212),stem(y),title('作4倍抽取后的信号'),xlabel('n')
figure(2),subplot(211)
plot(hn),grid,title('4倍抽取所用滤波器的h(n)')
xlabel('n'),ylabel('h(n)')
hw=fft(hn,512);
w=2*[0:511]/512;
subplot(212)
plot(w,20*log10(abs(hw)))grid
title('4倍抽取所用滤波器的幅频响应')
图10图11
3)程序**如下:
n=0:48;
fs=16;
x=sin(2*pi*n*1/fs);
y=resample(x,3,4); 作l/m=3/4倍的抽样率转换。
stem(y),xlabel('n')
title('作3/4倍抽样率转换后的信号')图12
数字信号处理作业
题一 令,其中,u n 是白噪声。1 使用matlab中的有关文件产生均值为0,功率为0.1的均匀分布白u n 求其自相关函数并画出其波形。解 1 产生均值为0,功率为0.1的均匀分布的白u n 的程序如下 答 1 matlab的rand函数可用来产生均值微0.5,方差 即功率 为1 12,在 0,...
数字信号处理作业
数。字。信。号。处。理。题目数字信号处理系统 学院学院。专业班。姓名李晓东 学号 20110321169 济南大学。2013年10月。数字信号处理。数字信号处理是把信号用数字或符号表示的序列,通过计算机或通用信号处理设备,用数字的数值计算方法处理 例如滤波 变换 压缩 增强 估计 识别等 以达到提取...
数字信号处理作业
iir型数字滤波器的设计。姓名 汤茂森学号 1130209304 班级 b130209b 设计iir型数字滤波器,要求如下 使用带通型巴特沃斯滤波器,带通边频wp为45hz 55hz,衰减为0.5db,带阻边频ws为30hz,100hz,衰减为45db。一 iir型数字滤波器。iir infinit...