⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kf_sine_demo.m

📁 有关kalman滤波及其一些变形滤波算法
💻 M
字号:
% Kalman Filter demonstration with sine signal.%% History:%    3.12.2002 SS  The first implementation%% Copyright (C) 2002 Simo S鋜kk?%% This software is distributed under the GNU General Public % Licence (version 2 or later); please refer to the file % Licence.txt, included with the software, for details.  %  % Create sine function  %  S1 = [0.2;1.0];  S2 = [1.0;-0.2];  sd = 0.1;  dt = 0.1;  w = 1;  T = (0:dt:30);  X = sin(w*T);  Y = X + sd*randn(size(X));  %  % Initialize KF to values  %  %   x = 0  %   dx/dt = 0  %  % with great uncertainty in derivative  %  M = [0;0];  P = diag([0.1 2]);  R = sd^2;  H = [1 0];  q = 0.1;  F = [0 1;       0 0];  [A,Q] = lti_disc(F,[],diag([0 q]),dt);  %  % Track and animate  %  MM = zeros(size(M,1),size(Y,2));  PP = zeros(size(M,1),size(M,1),size(Y,2));  clf;  clc;  disp('In this demonstration we estimate a stationary sine signal from noisy measurements by using the classical Kalman filter.');  disp(' ');  disp('The filtering results are now displayed sequantially for 10 time step at a time.');  disp(' ');  disp('<push any key to proceed to next time steps>');    for k=1:size(Y,2)    %    % Track with KF    %    [M,P] = kf_predict(M,P,A,Q);    [M,P] = kf_update(M,P,Y(k),H,R);    MM(:,k) = M;    PP(:,:,k) = P;    %    % Animate    %    if rem(k,10)==1      plot(T,X,'b--',...           T,Y,'r.',...           T(k),M(1),'k*',...           T(1:k),MM(1,1:k),'k-');      legend('Real signal','Measurements','Latest estimate','Filtered estimate','fontsize',11)      title('Estimating a noisy sine signal with Kalman filter.','fontsize',13);      drawnow;            pause;    end  end  clc;  disp('In this demonstration we estimate a stationary sine signal from noisy measurements by using the classical Kalman filter.');  disp(' ');  disp('The filtering results are now displayed sequantially for 10 time step at a time.');  disp(' ');  disp('<push any key to see the filtered and smoothed results together>')  pause;    %  % Apply Kalman smoother  %  SM = rts_smooth(MM,PP,A,Q);  plot(T,X,'b--',...       T,MM(1,:),'k-',...       T,SM(1,:),'r-');  legend('Real signal','Filtered estimate','Smoothed estimate','fontsize',11)   title('Filtered and smoothed estimate of the original signal','fontsize',13);    clc;  disp('The filtered and smoothed estimates of the signal are now displayed.')  disp(' ');  disp('RMS errors:');  %  % Errors  %  fprintf('KF = %.3f\nRTS = %.3f\n',...          sqrt(mean((MM(1,:)-X(1,:)).^2)),...          sqrt(mean((SM(1,:)-X(1,:)).^2)));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -