实验五 自适应滤波器算法实验
一、 实验目的
1)了解自适应滤波器算法 实验的具体流程;
2)熟练掌握自适应滤波器的使用;
二、实验内容
1) 将 example47-自适应滤波器算法工程导入,并运行-写入,最后出现结
果;配置 CCS 成纯软件模式;
2) 工程代码原理图及自适应滤波器算法原理图;
3) 算法复杂度评估及算法复杂度优化;
三、 实验原理图
开始
LMS 算法
初始化并输出波形
初始化工作,为各个输入端的
权值覆上随机初始值
调用 LMS 算法计算输出
结束
返回
四、 实验步骤
1) Workspace 选择 D:\Core_F28335\TOP28335_CODE
2) 将 CCS 设置成软件仿真真,并设置仿真参数
3) 导入自适应了滤波器程序
五、 实验现象
1) 将 example47-自适应滤波器算法工程导入,并运行-写入,
最后出现结果;
2) 算法复杂度评估及算法复杂度优化;
LMS 算法计算复杂度为更新一次滤波器权系数时所需的计算量,
本例程使用的滤波器有 16 个权系数,采样点为 1024。该程序的时间
复杂度为(1024-16)*16。
六、实验思考
1) 根据 LMS 算法的迭代公式更新滤波器参数,用输入信号数组
xx[],输出信号数组 rr[],误差数组 wc[],以及滤波器权系数 h[]。
通过 for 循环语句进行一个一个样点值滤波计算。
for ( i=COEFFNUMBER+1;i
wc[i]=rr[i]-xx[i];
}
用 FIRLMS 函数得到了一个滤波后的样点信号值 nLastOutput 存
放在输出信号数组 rr[]中。for 循环一个一个得到滤波过的信号值第
INPUTNUMBER=1024 个为止
2) 根据输入的采样值计算滤波器的输出并求出误差;
滤 波 计 算 :FIRLMS(int
*nx,float
*nh,int
nError,int
nCoeffNumber) 这个函数来实现滤波过程。即
)(
ny
1
N
i
0
(
nx
)(*)1
iw
,
FIR 滤波器为 16 阶,N 为 16,步长取 0.005,用 FIRLMS 函数得到了
一个滤波后的样点信号值。
int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber)
{
int i,r;float fWork;
r=0;
for ( i=0;i