《卡尔曼滤波器及其matlab代码.doc》由会员分享,可在线阅读,更多相关《卡尔曼滤波器及其matlab代码.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.信息融合大作业维纳最速下降法滤波器,卡尔曼滤波器设计及Matlab仿真时间:2010-12-6专业:信息工程班级:09030702学号:2007302171 姓名:马志强1. 滤波问题浅谈估计器或滤波器这一术语通常用来称呼一个系统,设计这样的系统是为了从含有噪声的数据中提取人们感兴趣的,接近规定质量的信息。由于这样一个宽目标,估计理论应用于诸如通信、雷达、声纳、导航、地震学、生物医学工程、金融工程等众多不同的领域。例如,考虑一个数字通信系统,其基本形式由发射机、信道和接收机连接组成。发射机的作用是把数字源(例如计算机)产生的0、1符号序列组成的消息信号变换成为适合于信道上传送的波形。而由于符
2、号间干扰和噪声的存在,信道输出端收到的信号是含有噪声的或失真的发送信号。接收机的作用是,操作接收信号并把原消息信号的一个可靠估值传递给系统输出端的某个用户。随着通信系统复杂度的提高,对原消息信号的还原成为通信系统中最为重要的环节,而噪声是接收端需要排除的最主要的干扰,人们也设计出了针对各种不同条件应用的滤波器,其中最速下降算法是一种古老的最优化技术,而卡尔曼滤波器随着应用条件的精简成为了普适性的高效滤波器。2维纳最速下降算法滤波器2.1 最速下降算法的基本思想考虑一个代价函数J(w),它是某个未知向量w的连续可微分函数。函数J(w)将w的元素映射为实数。这里,我们要寻找一个最优解w。使它满足如
3、下条件J(w0)J(w)(2.1)这也是无约束最优化的数学表示。特别适合于自适应滤波的一类无约束最优化算法基于局部迭代下降的算法:从某一初始猜想w(0)出发,产生一系列权向量w1,w2,,使得代价函数J(w)在算法的每一次迭代都是下降的,即Jwn+1J(w(n)其中w(n)是权向量的过去值,而wn+1是其更新值。我们希望算法最终收敛到最优值w0。迭代下降的一种简单形式是最速下降法,该方法是沿最速下降方向连续调整权向量。为方便起见,我们将梯度向量表示为g=Jw=J(w)w(2.2)因此,最速下降法可以表示为wn+1=wn-12g(n)(2.3)其中n代表进程,是正常数,称为步长参数,1/2因子的
4、引入是为了数学上处理方便。在从n到n+1的迭代中,权向量的调整量为wn=wn+1-wn=-12g(n)(2.4)为了证明最速下降算法满足式(2.1),在wn处进行一阶泰勒展开,得到Jwn+1Jwn+gHnw(n)(2.5)此式对于较小时是成立的。在式(2.4)中设w为负值向量,因而梯度向量g也为负值向量,所以使用埃尔米特转置。将式(2.4)用到式(2.5)中,得到Jwn+1Jwn-12g(n)2此式表明当为正数时,Jwn+11&q2/Ryx最大特征值hn=zeros(1,N);hn(:)=5;vg=0;Rxx=xcorr(1);Ryx=min(min(corrcoef(1, 1+randn);
5、echo offfor i=1:N-1; %vg=2*Rxx*hn(:,i)-2*Ryx; %hn(:,i+1)=hn(:,i)-1/2*q*vg; vg=2*Rxx*hn(i)-2*Ryx; hn(i+1)=hn(i)-1/2*q*vg; m(i)=1;endt=1:N-1;plot(t,hn(t),r-,t,m(t),b-);5.3 后联平滑滤波器的卡尔曼滤波器clearclc;N=300;CON = 5; x = zeros(1,N);x(1) = 1;p = 10;Q = randn(1,N)*0.2;%过程噪声协方差R = randn(1,N);%观测噪声协方差y = R + CON
6、;%加过程噪声的状态输出for k = 2 : N Q1 = cov(Q(1:k-1);%过程噪声协方差 Q2 = cov(R(1:k-1); x(k) = x(k - 1);%预估计k时刻状态变量的值 p = p + Q1;%对应于预估值的协方差 kg = p / (p + Q2);%kalman gain x(k) = x(k) + kg * (y(k) - x(k); p = (1 - kg) * p;endFilter_Wid = 10;smooth_res = zeros(1,N);kalman_p = zeros(1,N);for i = Filter_Wid + 1 : N te
7、mpsum = 0; kalman_m = 0; for j = i - Filter_Wid : i - 1 tempsum = tempsum + y(j); kalman_m = kalman_m+x(j); end kalman_p(i) = kalman_m/Filter_Wid; smooth_res(i) = tempsum / Filter_Wid;%平滑滤波end% figure(1);% hist(y);t=1:N;figure(1);expValue = zeros(1,N);for i = 1: N expValue(i) = CON;endplot(t,expValue,r,t,x,g,t,y,b,t,smooth_res,k,t,kalman_p,m);legend(truth,estimate,measure,smooth result,smooth kalman);%axis(0 N 0 30)xlabel(Sample time);ylabel(Room Temperature);title(Smooth filter VS kalman filter);
限制150内