DSP 自适应滤波器与系统辨识实验

合集下载

系统辨识与自适应控制实验

系统辨识与自适应控制实验

中南大学系统辨识及自适应控制实验指导老师贺建军姓名史伟东专业班级测控1102班0909111814号实验日期2014年11月实验一 递推二乘法参数辨识设被辨识系统的数学模型由下式描述:2341231232.0 1.51()()()1 1.50.70.11 1.50.70.1z z z y k u k k z z z z z zξ---------++=+-++-++ 式中ξ(k )为方差为0.1的白噪声。

要求:(1) 当输入信号u (k )是方差为1的白噪声序列时,利用系统的输入输出值在线辨识上述模型的参数;(2) 当输入信号u (k )是幅值为1的逆M 序列时,利用系统的输入输出值在线辨识上述模型的参数;分析比较在不同输入信号作用下,对系统模型参数辨识精度的影响。

(1)clear all; close all;a=[1 -1.5 0.7 0.1]';b=[1 2 1.5]';d=3; %对象参数na=length(a)-1;nb=length(b)-1; %计算阶次L=500; %数据长度uk=zeros(d+nb,1);yk=zeros(na,1); %输入输出初值u=randn(L,1); %输入采用方差为1的白噪声序列xi=sqrt(0.1)*randn(L,1); % 方差为0.1的白噪声干扰序列theta=[a(2:na+1);b]; %对象参数真值thetae_1=zeros(na+nb+1,1); %参数初值P=10^6*eye(na+nb+1);for k=1:Lphi=[-yk;uk(d:d+nb)]; %此处phi为列向量y(k)=phi'*theta+xi(k); %采集输出数据%递推公式K=P*phi/(1+phi'*P*phi);thetae(:,k)=thetae_1+K*(y(k)-phi'*thetae_1);P=(eye(na+nb+1)-K*phi')*P;%更新数据thetae_1=thetae(:,k);for i=d+nb:-1:2uk(i)=uk(i-1);enduk(1)=u(k);for i=na:-1:2yk(i)=yk(i-1);endyk(1)=y(k);endplot([1:L],thetae); %line([1:L],[theta,theta]); xlabel('k');ylabel('参数估计a,b');legend('a_1','a_2','a_3','b_0','b_1','b_2');axis([0 L -2 2]);(2)clear all;a=[1 -1.5 0.7 0.1]';b=[1 2 1.5]';d=2; %对象参数na=length(a)-1;nb=length(b)-1; %计算阶次L=20; %数据长度uk=zeros(d+nb,1);yk=zeros(na,1); %输入初值x1=1;x2=1;x3=1;x4=0;S=1;%移位寄存器初值,方波初值xi=rand(L,1);%白噪声序列theta=[a(2:na+1);b]; %对象参数真值for k=1:Lphi(k,:)=[-yk;uk(d:d+nb)]'; % phi(k,:)为行向量,便于组成phi矩阵y(k)=phi(k,:)*theta+xi(k); %采集输出数据IM=xor(S,x4);if IM==0u(k)=-1;elseu(k)=1;endS=not(S);M=xor(x3,x4); %产生M序列%更新数据x4=x3;x3=x2;x2=x1;x1=M;for i=nb+d:-1:2uk(i)=uk(i-1);enduk(1)=u(k);for i=na:-1:2yk(i)=yk(i-1);endyk(1)=y(k);End实验二 最小方差自校正控制实验设二阶纯滞后被控对象的数学模型参数未知或慢时变,仿真实验时用下列模型:34112122.5 1.510.5()()()1 1.50.71 1.50.7z z z y k u k k z z z zξ-------++=+-+-+ 式中ξ(k )为方差为0.1的白噪声。

基于DSP的自适应滤波器设计

基于DSP的自适应滤波器设计

基于DSP的自适应滤波器设计随着计算机技术和数字信号处理(DSP)算法的发展,自适应滤波器在信号处理领域中得到了广泛的应用。

DSP是数字滤波器的重要组成部分,其处理速度快,具有高精度、高灵活性和高可靠性等优点。

在信号处理中,一些不同于滤波器的滤波方法使用自适应滤波器。

自适应滤波器可以自动地调整它的系数来滤波信号,无需事先知道信号的特征。

因此,自适应滤波器被广泛应用于降噪、信号解调、调制解调、滤波等方面。

自适应滤波器的基本原理自适应滤波器可以根据输入信号来自动调整滤波器系数,以最小化原始信号与滤波器输出信号之间的误差。

其基本原理是通过误差信号来调整滤波器的权值(系数)。

自适应滤波器基于反馈原理运作,在实际滤波系统中是非常常见的。

它使用反馈调整滤波器的权值或系数,使得输出信号最小化误差信号,达到最小方差或最小均方误差。

在自适应滤波器的设计中,最重要的是确定误差准则和自适应算法。

误差准则通常是信号的均方误差,也可以是其他误差指标。

自适应算法是滤波器系数的更新规则,一般采用梯度算法或LMS(最小均方)算法。

DSP芯片是高性能的数字信号处理芯片,可快速处理大量数据。

为了实现基于DSP的自适应滤波器,我们需要选择一个高性能DSP芯片,并编写相应的算法。

自适应滤波器可通过DSP芯片上的FIR(有限脉冲响应)滤波器的实现来实现。

FIR滤波器具有线性相位和可控的频率响应,可以对输入信号进行高精度滤波。

在DSP芯片中,FIR滤波器的系数可以通过程序动态调整,实现自适应滤波器的功能。

在DSP芯片上实现自适应滤波器需要考虑以下几个方面:1. DSP芯片的性能:自适应滤波器需要快速处理大量数据,因此需要选择高性能的DSP芯片。

2. 算法的复杂性:选择算法时需要考虑实时性、计算复杂度和占用内存等因素。

3. 滤波器的选取:FIR滤波器在自适应滤波器中广泛使用,但我们还应该考虑IIR(无限脉冲响应)滤波器等其他滤波器的使用。

4. 数据格式和精度:在DSP芯片上实现自适应滤波器时,需要选择正确的数据格式和精度,以确保信号的精确性和稳定性。

系统辨识及自适应控制实验..

系统辨识及自适应控制实验..

Harbin Institute of Technology系统辨识与自适应控制实验报告题目:渐消记忆最小二乘法、MIT方案与卫星振动抑制仿真实验专业:控制科学与工程姓名:学号: 15S******指导老师:日期: 2015.12.06哈尔滨工业大学2015年11月本实验第一部分是辨识部分,仿真了渐消记忆递推最小二乘辨识法,研究了这种方法对减缓数据饱和作用现象的作用;第二部分是自适应控制部分,对MIT 方案模型参考自适应系统作出了仿真,分别探究了改变系统增益、自适应参数的输出,并研究了输入信号对该系统稳定性的影响;第三部分探究自适应控制的实际应用情况,来自我本科毕设的课题,我从自适应控制角度重新考虑了这一问题并相应节选了一段实验。

针对挠性卫星姿态变化前后导致参数改变的特点,探究了用模糊自适应理论中的模糊PID 法对这种变参数系统挠性振动抑制效果,并与传统PID 法比较仿真。

一、系统辨识1. 最小二乘法的引出在系统辨识中用得最广泛的估计方法是最小二乘法(LS)。

设单输入-单输出线性定长系统的差分方程为:()()()()()101123n n x k a x k a k n b u k b u x k n k +-+⋯+-=+⋯+-=,,,, (1.1) 错误!未找到引用源。

式中:()u k 错误!未找到引用源。

为控制量;错误!未找到引用源。

为理论上的输出值。

错误!未找到引用源。

只有通过观测才能得到,在观测过程中往往附加有随机干扰。

错误!未找到引用源。

的观测值错误!未找到引用源。

可表示为: 错误!未找到引用源。

(1.2)式中:()n k 为随机干扰。

由式(1.2)得错误!未找到引用源。

()()()x k y k n k =- (1.3)将式(1.3)带入式(1.1)得()()()()()()()101111()nn n i i y k a y k a y k n b u k b u k b u k n n k a k i n =+-+⋯+-=+-+⋯+-++-∑ (1.4)我们可能不知道()n k 错误!未找到引用源。

DSP课程设计-自适应滤波器

DSP课程设计-自适应滤波器

《数字信号处理》课程设计_ 自适应滤波器设计与实现系别计算机科学系专业通信工程班级学号组次姓名指导教师评定成绩起止日期年月日至年月日目录摘要 (1)第1章课程设计的目的和要求.................................................. 错误!未定义书签。

第2章系统功能介绍及总体设计方案 ................................. 错误!未定义书签。

第3章主要内容和步骤 .................................................................. 错误!未定义书签。

3.1自适应滤波器原理 ................................................................... 错误!未定义书签。

3.2操作步骤 ......................................................................................... 错误!未定义书签。

第4章详细设计 ................................................................................... 错误!未定义书签。

第5章实验过程 ................................................................................... 错误!未定义书签。

5.1汇编语言实验步骤与内容 .................................................. 错误!未定义书签。

5.2实验过程中出现的错误及解决的办法....................... 错误!未定义书签。

自适应估计算法的系统辨识及DSP实现

自适应估计算法的系统辨识及DSP实现

声 污染给人 的生 产 和生活 造成 诸多 不便 。传统 的 噪
声控 制方法一般采用 的是被动技术 , 例如密 封 、 屏蔽 、
题提 出了各种 改进 的算法 _ 4 J , 文献[ 7 ] 中的递 推预 报误差 ( R e c u r s i v e P r e d i c t i o n E r r o r , R P E ) 算法 , 其步长
( C o l l e g e o f I n f o r ma t i o n E n g i n e e r i n g, Z h e j i a n g U n i v e r s i t y o f T e c h n o l o g y , H a n g z h o u 3 1 0 0 1 4 , C h i n a )
【 Ke y w o r d s 】a c t i v e n o i s e c o n t r o l ; s y s t e m i d e n t i i f c a t i o n ; a d a p t i v e e s t i m a t i o n a l g o r i t h m; L M S ; D S P
【 A b s t r a c t 】 T h e a p p l i c a t i o n o f a d a p t i v e e s t i m a t i o n a l g o r i t h m i n s y s t e m i d e n t i i f c a t i o n i s d e s c i r b e d T h e a d a p t i v e e s t i m a t i o n a l g o —
r i t hm e s t i ma t e s t h e c o r r e l a t i o n ma t r i x o f t h e t a p i n p u t s a n d t h e c r o s s — c o r r e l a t i o n v e c t o r b e t we e n t he t a p i n pu t s a n d t h e d e s i r e d r e s p o n s e i n r e a l t i me by e mp l o y i n g mo v i ng a v e r a g e me t h o d du r i n g t h e s y s t e m i de nt i ic f a t i o n .T he p ur po s e i s c o n s t a n t l y u p da t i ng t he t a p— we i g h t v e c t o r . Th e a l g o it r h m h a s b e t t e r s t a b i l i t y a nd l o w c o mp l e x i t y,S O i t ha s g o o d a p p l i c a t i o n i n e n g i n e e in r g p r a c t i c e .

基于DSP的自适应滤波器的设计与实现

基于DSP的自适应滤波器的设计与实现

基于DSP的自适应滤波器的设计与实现贡镇【期刊名称】《现代电子技术》【年(卷),期】2013(000)017【摘要】The design of adaptive filter system based on TMS320F28234 is discussed. In the absence of any priori knowledge of signal and noise,the adaptive filter can reach the optimal filtering purposes. According to the principle of adaptive filtering, the LMS algorithm is discussed and analyzed,which is easy to realize. By comparing the advantages and disadvantages of FIR structure and IIR structure filter,the transverse FIR structure is used for the adaptive filter. To meet real-time requirement of the adaptive filtering,TMS320F28234 chip is used in the system design. Its minimum hardware system and software system were designed. The adaptive filter was realized with TMS320F28234. The simulation results show that the filtering effect of the adaptive filter is superior.%论述了基于TMS320F28234的自适应滤波器系统的设计。

DSP实验报告(综合)

DSP实验报告(综合)

实验报告||实验名称 D SP课内系统实验课程名称DSP系统设计||一、实验目的及要求1. 掌握用窗函数法设计FIR数字滤波器的原理和方法。

熟悉线性相位FIR 数字滤波器特性。

了解各种窗函数对滤波器特性的影响。

2. 掌握设计IIR数字滤波器的原理和方法。

熟悉IIR数字滤波器特性。

了解IIR数字滤波器的设计方法。

3.掌握自适应数字滤波器的原理和实现方法。

掌握LMS自适应算法及其实现。

了解自适应数字滤波器的程序设计方法。

4.掌握直方图统计的原理和程序设计;了解各种图像的直方图统计的意义及其在实际中的运用。

5.了解边缘检测的算法和用途,学习利用Sobel算子进行边缘检测的程序设计方法。

6.了解锐化的算法和用途,学习利用拉普拉斯锐化运算的程序设计方法。

7.了解取反的算法和用途,学习设计程序实现图像的取反运算。

8.掌握直方图均衡化增强的原理和程序设计;观察对图像进行直方图均衡化增强的效果。

二、所用仪器、设备计算机,dsp实验系统实验箱,ccs操作环境三、实验原理(简化)FIR:有限冲激响应数字滤波器的基础理论,模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。

数字滤波器系数的确定方法。

IIR:无限冲激响应数字滤波器的基础理论。

模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。

数字滤波器系数的确定方法。

、自适应滤波:自适应滤波器主要由两部分组成:系数可调的数字滤波器和用来调节或修正滤波器系数的自适应算法。

e(n)=z(n)-y(n)=s(n)+d(n)-y(n)直方图:灰度直方图描述了一幅图像的灰度级内容。

灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标是该灰度出现的频率(像素个数与图像像素总数之比)。

图像边缘化:所谓边缘(或边沿)是指其周围像素灰度有阶跃变化。

经典的边缘提取方法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘临近一阶或二阶方向导数变化规律,用简单的方法检测边缘。

Matlab中的系统辨识与自适应滤波

Matlab中的系统辨识与自适应滤波

Matlab中的系统辨识与自适应滤波一、引言Matlab是一种常用的科学计算和数据分析软件,在信号处理领域有着广泛的应用。

系统辨识和自适应滤波是Matlab中的两个重要概念,它们在信号处理和控制系统中有着重要的作用。

本文将介绍Matlab中的系统辨识和自适应滤波的基本原理、应用场景以及常用的方法。

二、系统辨识系统辨识是指通过对系统输入和输出的观测数据进行分析,来确定系统的数学模型。

在实际应用中,我们经常需要了解和预测系统的行为,通过系统辨识可以获得系统模型,从而进行系统仿真、控制和优化等操作。

1. 系统辨识的基本原理系统辨识的基本原理是通过建立数学模型来描述系统的行为。

常见的系统模型包括线性模型和非线性模型。

线性模型可以用线性方程组描述,而非线性模型则包括一些复杂的数学函数。

利用系统辨识方法,我们可以通过观测系统的输入和输出数据,推断系统模型中的参数,从而得到系统模型。

2. 系统辨识的应用场景系统辨识在许多领域中都有广泛的应用。

在电力系统中,通过对电力负荷和发电机数据的观测,可以建立电力系统的模型,用于短期负荷预测和系统调度。

在通信系统中,通过对信号的采集和分析,可以进行信道建模和功率控制等操作。

此外,系统辨识还应用于机械系统、航空航天系统等领域。

3. 系统辨识的常用方法在Matlab中,有许多工具和函数可用于进行系统辨识。

常用的方法包括最小二乘法、极大似然法、模态分析法等。

在具体应用中,我们可以根据系统的特点选择合适的方法,并使用Matlab提供的函数进行系统辨识。

三、自适应滤波自适应滤波是指根据输入信号的特性,调整滤波器的系数以获得期望的输出信号。

在实际应用中,我们经常遇到信号受到噪声、干扰等因素影响的情况,利用自适应滤波技术可以削弱或消除这些干扰,提高信号的质量。

1. 自适应滤波的基本原理自适应滤波的基本原理是通过不断调整滤波器的系数,使得滤波器的输出与期望输出之间的误差最小。

自适应滤波器通过不断更新系数的方式,可以自动适应输入信号的变化,从而提高滤波器的性能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验6: 自适应滤波器与系统辨识实验一.实验目的1.熟悉自适应滤波器的基本概念,掌握LMS 算法的基本原理。

2.掌握LMS 算法的DSP 实现方法。

3. 熟悉自适应方法进行系统辨识的原理和方法。

4. 学习采用虚拟仪器记录、分析信号的方法。

二.实验设备PC 兼容机一台,操作系统为Windows2000,安装Code Composer Studio 4.2软件。

C55x DSP 实验箱。

三.实验原理1.自适应滤波器的基本概念和LMS 算法 基于LMS 算法的自适应滤波器结构见下图。

其中,)(n x 、)(n d 分别称为滤波器的输入信号(或参考输入信号,或参考信号)和期望信号,)(n e 称为滤波器的误差信号,()y n 称为滤波器的控制输出信号或输出信号。

W(z)称为控制滤波器或主滤波器,)(n w i 为控制滤波器的权值系数,0,1......1l L =-,L 为滤波器阶数。

定义滤波器输入信号向量和滤波器系数向量分别为[]()()(1)....(1)Tn x n x n x n L =--+X (1-1)[]011()()()....()TL n w n w n w n -=W (1-2)于是,滤波器输出信号可表达为()()()()()T T y n n n n n ==w x x w (1-3a )或∑=-=Ll l l n x n w n y 0)()()( (1-3b )误差信号可表达为()()()()()()T e n d n y n d n n n =-=-w x (1-4)自适应滤波器的目的是以迭代的方式逐步调整滤波器系数)(n w l ,使误差信号)(n e 的能量(或幅度)不断减小,趋近最优值。

在LMS 算法中,定义2()()n e n ξ=为性能函数,采用梯度法进行寻优,由此可导出滤波器系数更新公式:(1)()()()n n e n n μ+=+w w x (1-5)其中μ为收敛因子。

μ的取值要合适,太小收敛速度过慢,太大则会导致系统会不稳定。

2.自适应系统辨识的基本原理基于LMS 算法的自适应系统辨识原理见下图,其中)(G z 为待辨识的系统。

白噪声信号发生器发出的辨识噪声)(n u 一方面注入待辨识系统)(G z ,一方面作为自适应滤波器的参考输入信号。

算法收敛后,自适应滤波器的系数)(n w 就可取为待辨识系统)(G z 的冲击响应g 。

3. 本实验的硬件结构辨识系统结构见下图。

其中,白噪声信号)(n u 由VC5509A 内部产生,经AIC23B 的一路DAC 输出,注入图中所示某未知电路模块;该未知电路模块的输出信号作为AIC23B 的一路输入信号,经ADC 得到)(n d 。

同时,)(n u 、)(n d 分别作为自适应滤波器的参考输入信号和期望输入信号。

自适应滤波器所涉及的计算由VC5509A 完成。

该系统所得辨识结果为从信号)(n u 开始到)(n d 之间所包括的所有子系统,除了未知电路模块外,还包括所用到的AIC23B 的DAC 和ADC 部分。

4.实验源程序(1)lab6.c 为主程序,首先完成系统初始化、变量初始化,然后通过查询定时器中断服务程序实现采样时间控制,在每一个采样时间内调用一次自适应系统辨识模块,完成一次自适应滤波,当滤波次数达到规定次数时停止辨识,并进入循环等待状态。

(2)process.c 为自适应系统辨识模块。

每次自适应系统辨识过程中完成的操作:1)产生一个白噪声数据,一方面作为主滤波器的参考输入x(n),一方面由JP5的引脚LOUT0输出至被辨识系统的输入端口;2)从JP5引脚LIN0读入来自被辨识系统的输出端口的信号,作为主滤波器的期望信号d(n);3)主滤波器采用当前系数w (n),对参考输入信号进行FIR 滤波,得到控制输出信号y(n);4)将期望信号与控制输出信号相减得到误差信号e(n),误差信号由JP5的引脚LOUT1输出,以便采用虚拟信号分析仪记录误差信号、观察自适应滤波的过程;5)采用LMS 算法对主滤波器进行系数更新。

(3)lab5.cmd 为命令文件。

(4)其它模块还有:sdram_init.c ,aic23.c ,i2c.c ,util.c ,vectors.asm 。

(5)有关头文件:5509.h ,c55xxdefs.h ,util.h 。

四.实验步骤1. 预习: (1)认真阅读本实验指导书第三部分,熟悉自适应滤波和自适应辨识的基本原理和方法。

(2)认真阅读本实验指导书第七部分,理解主程序和process.c 模块,以及所涉及的相关模块及其作用。

2. 实验准备: 双击桌面图标,启动Code Composer Studio ,选择工作目录。

3.建立工程lab6。

4. 向工程lab6中加载文件:lab6.c ,lab5.cmd ,sdram_init.c ,aic23.c ,i2c.c ,util.c ,vectors.asm ,5509.h ,c55xxdefs.h ,util.h 。

5.建立配置文件xml (选择VC5509A Emulater 模式,仿真器选择XDS100V2)。

6. 使用导线连接JP5的引脚LOUT0与LIN0,将虚拟仪器的信号输入端接JP5的引脚LOUT1。

7.编译、链接工程,下载程序。

打开虚拟仪器记录窗口开始记录波形。

8. 运行程序,数秒钟后停止执行程序,停止虚拟仪器记录。

1)采用CCS观察波形。

打开图形观察窗口,观察滤波器系数波形,观察相关信号。

2)观察虚拟仪器所记录的误差信号波形。

9. 修改相关参数(滤波器长度、收敛步长、辨识次数等),重复上述第7、8步操作,直至得到误差信号与期望输入信号(或控制输出信号)相比足够小时,取主滤波器系数作为辨识结果。

10.退出CCS。

五.实验结果六.思考题(1)本实验的辨识的系统包括哪些环节?(2)选做:用导线将使VC5509A板上JP5-LOUT0引脚连接至实验箱上的功率放大器和扬声器,将麦克连接至实验箱上信号调理板的Mic信号输入端,再将信号调理板的信号输出端连接至VC5509A板上JP5-LIN0引脚,重复实验。

此时所辨识的系统包括哪些环节?此时得到的系统冲击响应与原实验相比有什么特点?七.附录(1)主程序/* 本实验使用vc5509A板右上角的JP5接线排座.* 从左边起,JP5的引脚分别是AIC23B0的LLINE(标记为LIN0)、RLINE(标记为RIN0)、NC、* LOUT(标记为LOUT0)、ROUT (标记为ROUT0)*/#include "5509.h"#include "util.h"#include "math.h"/*********************************************************************************/int timer_flag; //用户自定义定时器中断标志.在定时器isr中改变,在主程序中查询、复位int N_iden; //辨识次数int n_iden; //辨识进程计数器,该值等于N_iden时结束辨识过程.float WhiteNoise; //白噪声信号当前值float ErrorSignal; //误差噪声信号当前值float DesiredSignal;//期望信号当前值float w[L],x[L]; //主滤波器系数向量和当前参考输入信号向量.L为主滤波器阶数,在util.h中定义和修改float d[L],e[L],y[L]; //期望、误差、控制输出等信号向量.用于调试程序时观察信号波形.void INTR_init(); //中断初始化模块void TIMER_init(); //定时器初始化子程序void wait(unsigned int cycles); //时延子程序int i;float Mu=0.05; //自适应滤波器的收敛因子,在信号处理模块process.c中使用float alpha; //=Mu*e(n),在信号处理模块process.c中使用void main(){/*---------------------------系统部件初始化---------------------------------------- */PLL_Init(144); //调用锁相环初始化子程序,使CPU时钟频率为144MHz.该模块代码定义在util.c中.wait(29); //调用时延子程序,使CPU时延29个周期. 该模块代码定义在main函数后SDRAM_init(); //调用SDRAM初始化子程序. 该模块代码定义在sdram_init.c中AIC23_Init(); //调用AIC23初始化子程序. 该模块代码定义在aic23.c中INTR_init(); //调用中断初始化子程序.该模块代码定义在main函数后TIMER_init(); //调用定时器初始化子程序.该模块代码定义在main函数后/*---------------------------变量初始化---------------------------------------- */for(i=0;i<L;i++){w[i]=0.0; //初始化主滤波器系数向量x[i]=0.0; //初始化参考输入信号向量d[i]=0.0;e[i]=0.0;y[i]=0.0;}ErrorSignal=0;DesiredSignal=0;timer_flag=0;n_iden=0;N_iden=16000;/*---------------------------辨识过程主循环------------------------------------ */while(n_iden<N_iden){if(timer_flag==1) //在主程序中清timer_flag为0,在定时器isr中置timer_flag为1.{ //如果timer_flag为0则继续查询,若为1则调用LMS_Filter进行一次辨识过程timer_flag=0;LMS_Filter();n_iden++;}}/*---------------------------辨识过程结束后进入等待--------------------------------- */while (1){}}/*****************************/void interrupt Timer(){timer_flag=1;}/******************************/void wait(unsigned int cycles){int i;for ( i = 0 ; i < cycles ; i++ ){}}void INTR_init( void ){PC55XX_MMR pMMR = (PC55XX_MMR)C55XX_MMR_ADDR;Write(pMMR->ivpd,0xd0);Write(pMMR->ivph,0xd0);Write(pMMR->ier0,0x10);Write(pMMR->dbier0,0x10);Write(pMMR->ifr0,0xffff);asm(" BCLR INTM");}void TIMER_init(void){PC55XX_TIMER pTIMER = (PC55XX_TIMER)C55XX_TIM0_ADDR;//4KWrite(pTIMER->tim,0); // Timer registerWrite(pTIMER->prd,0x8CA0); // Timer period registerWrite(pTIMER->tcr,0x00E0); // Timer control registerWrite(pTIMER->prsc,0); // Timer prescaler register}}(2)自适应辨识子程序#include "5509.h"#include "util.h"#include "extaddr.h"#include "math.h"extern float ErrorSignal;extern float DesiredSignal;extern float WhiteNoise;extern float Pu,Mu,alpha;extern float w[L],x[L];extern float d[L],e[L],y[L];void LMS_Filter(){int i;int outputTemp,inputTemp;PC55XX_MCSP pMCBSP0 = (PC55XX_MCSP)C55XX_MSP0_ADDR;while (!ReadMask(pMCBSP0 -> spcr2, SPCR2_XRDY)); // 等待McBSP0准备好/* ------------------------------获得期望信号-----------------------------------*/inputTemp = Read(pMCBSP0->ddr1); //读取来McBSP0的数据,该数据为经由AIC23采集的被辨识系统的输出信号inputTemp = Read(pMCBSP0->ddr2);DesiredSignal=(float)inputTemp;/* ----------------------生成辨识白噪声信号,并输出-----------------------------------*/WhiteNoise=rand()-0x4000; //产生辨识白噪声信号,浮点数outputTemp=(int)WhiteNoise; //转化为整数Write(pMCBSP0->dxr1,outputTemp); //将数据送到McBSP0,经由AIC23转换成模拟信号输出,作为被辨识系统的输入信号Write(pMCBSP0->dxr2,outputTemp);/* ------------------------更新参考输入信号向量-----------------------------------*/for(i=L-1;i>0;i--){x[i]=x[i-1];}x[0]=WhiteNoise/32768;/* ------------------------更新期望输入信号向量-----------------------------------*/for(i=L-1;i>0;i--){d[i]=d[i-1];}d[0]=DesiredSignal/32768;/* --------------------计算主滤波器的输出-----------------------------------------*/y[0]=0.0;for(i=0;i<L;i++){y[0]=y[0]+w[i]*x[i];}/* ------------------------更新误差信号向量-----------------------------------*/for(i=L-1;i>0;i--){e[i]=e[i-1];}/* ------------------------计算误差信号-----------------------------------------*/e[0]=d[0]-y[0];/* ------------------------更新主滤波器系数--------------------------------------*/alpha=Mu*e[0];for(i=0;i<L;i++){w[i]=w[i]+alpha*x[i];} }。

相关文档
最新文档