• 卡尔曼滤波学习笔记1-Matlab模拟温度例子--代码比较乱,还需优化


    温度模拟参数选取

    xk 系统状态 实际温度
    A 系统矩阵 温度不变,为1
    B、uk 状态的控制量 无控制量,为0
    Zk 观测值 温度计读数
    H 观测矩阵 直接读出,为1
    wk 过程噪声 温度变化偏差,常量1e-1
    vk 测量噪声 读数误差,常量1e-6

    clc;
    clear all;
    close all;

    N = 200; % 迭代次数
    %w(1)=0;
    %w=randn(1,N);
    W = 0; %系统控制矩阵
    x(1) = 0;
    A = 1; %温度模拟A为1
    V = rand(1,N);
    q1 = std(V);
    %Rvv=q1.^2;
    Rvv = 0.1;
    q2 = std(x);
    Rxx = q2.^2;
    q3 = std(W);
    %Rww=q3.^2;
    Rww = 0.00001; %温度模拟Q为1e-6
    %c=0.6;
    c=1; %温度模拟H为1
    for k = 1:N
    Y(k) = 25 + sqrt(0.1)*rand(1);%温度模拟平均温度为25度 方差(协方差)为0.1的温度输入 测量方程,其中V为测量系统的噪声,c为测量系统的参数
    end
    p(1)=10; %协方差 初始值
    s(1)=1; %最优估计 初始值
    for t = 2:N
    s(t) = A*s(t-1) + W;
    p1(t) = A.^2*p(t-1) + Rww;
    %%协方差估计 求当前时刻的估计值的偏差,a为系统参数,没有控制量,所以没有参数b,Rww为噪声
    b(t) = c * p1(t) /(c.^2*p1(t) +Rvv);
    s(t) = A *s(t) + b(t)*(Y(t) -A*c*s(t));
    p(t) = p1(t) -c*b(t)*p1(t);

    end
    figure
    plot(Y,'g--');
    hold on
    plot(s,'r--');

    来源于:http://blog.csdn.net/s597471018/article/details/8275454

  • 相关阅读:
    最优二叉树(简易版本)
    平衡二叉树(AVL树)基础操作
    二叉树的基础操作
    双向链表(C语言)
    循环链表(C语言)
    单向链表(C语言)
    jQuery
    js事件
    JDBC-扩展
    JDBC
  • 原文地址:https://www.cnblogs.com/Kermit-Li/p/4107006.html
Copyright © 2020-2023  润新知