KF_matlab.zip

  • h0_337222
    了解作者
  • matlab
    开发工具
  • 93.3KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-23 11:13
    上传日期
以卡尔曼滤波,通过车辆纵向运动学,加速度传感器的读数是实际加速度和重力加速度沿着坡道方向的加速度的和,以此原理估算道路坡度。详细的matlab程序,注释很清楚,一看就懂。
KF_matlab.zip
  • KF_matlab
  • test2-qucheng-acceleration data1.xlsx
    62.7KB
  • data_deal_test2_qucheng1.m
    2.4KB
  • test2-qucheng-speed data1.xlsx
    36.1KB
内容介绍
clc clear %% %传感器信号读取 speed_profile1=xlsread('C:\Users\606\Desktop\坡度估算实验1\车速数据\test2-qucheng-speed data1.xlsx');%读取第一段道路车速文件 acceleration_profile1=xlsread('C:\Users\606\Desktop\坡度估算实验1\加速度数据\test2-qucheng-acceleration data1.xlsx');%读取第一段道路加速度文件 v1o=speed_profile1(:,1)./3.6;%第一段道路试验车速信号m/s t1=speed_profile1(:,2);%第一段道路时间信号 g=9.8;%重力加速度m/s2 delta_t=t1(2)-t1(1);%时间间隔s %% %传感器信号处理 as1=acceleration_profile1(:,2).*g;%第一段道路试验加速度信号(原)m/s2 tas1=acceleration_profile1(:,1);%第一段道路时间信号,加速度信号(原)对应 a1o=interp1(tas1,as1,t1,'PCHIP');%将第一段加速度信号进行插值处理,使加速度信号时间与车速信号时间对应 v1=smooth(v1o,10,'lowess'); a1=smooth(a1o,20,'lowess');%移动平均滤波,‘lowess’线性最小二乘滤波,'loess'加权线性最小二乘滤波'loess' %a1=medfilt1(a1o,20);%中值滤波 x1(1)=0; for i=1:length(v1)-1 x1(i+1)=x1(i)+v1(i)*delta_t; end figure(1) plot(t1,v1o,'b',t1,v1,'r') title('第一段坡道车速信号滤波对比') legend('车速原信号','车速滤波后信号'); xlabel('时间(s)');ylabel('车速(m/s)'); figure(2) plot(t1,a1o,'b',t1,a1,'r','LineWidth',1) title('第一段坡道加速度信号滤波对比') legend('加速度原信号','加速度滤波后信号'); xlabel('时间(s)');ylabel('加速度(m/s^2)'); %% %第一段坡道卡尔曼滤波估算 N1=length(t1);%计算连续N个时刻 n1=3;%状态维度,3个估计值 Xo1=zeros(n1,N1);%最优估计值迭代记录矩阵 Xs1=[0;0;0];%初始值 F1=[1 delta_t -g*delta_t;0 1 0;0 0 1];%状态转移/预测矩阵 H1=[1 0 0;0 1 0];%观测矩阵 P1=eye(n1); Q1=[1 0 0;0 1 0;0 0 1]; R1=[1e-2 0;0 1]; for i=2:N1 z1=[v1(i);a1(i)];%观测值 Xa1=F1*Xs1;%预测 P_1=F1*P1*F1'+Q1;% K1=P_1*H1'/((H1*P_1*H1'+R1));%卡尔曼增益 Xb1=Xa1+K1*(z1-H1*Xa1);%当前时刻最优估计值 Xo1(:,i)=Xb1;%记录 P1=(eye(3)-K1*H1)*P_1; %P=P_-K*H*P_;%更新 Xs1=Xb1;%更新 end v1_est=Xo1(1,:);%速度估计值 a1_est=Xo1(2,:);%加速度传感器读数估计值 angle1_est=asin(Xo1(3,:))/pi*180;%坡度估计值 figure(3) plot(t1,v1_est,'r',t1,v1,'b') title('第一段坡道车速信号卡尔曼估算对比') legend('车速估算值','车速真值'); xlabel('时间(s)');ylabel('车速(m/s)'); figure(4) plot(t1,a1_est,'r',t1,a1,'b') title('第一段坡道加速度信号卡尔曼估算对比') legend('加速度估算值','加速度真值'); xlabel('时间(s)');ylabel('加速度(m/s^2)'); figure(5) plot(x1,angle1_est,'r') title('第一段坡道坡度估算值') xlabel('路程(m)');ylabel('坡度角°');
评论
    相关推荐
    • Matlab合集
      冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版(冈萨雷斯)+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算:MATLAB技术实现(第2版)].杨淑莹.扫描版
    • MATLAB教程
      MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程
    • MATLAB
      MATLAB 该项目是在matlab上完成的,涉及创建和移动宇宙飞船和机器人。 太空飞船和机器人是使用Matlab中的简单几何形状创建的,并通过连续变换矩阵进行移动。 这个项目教我如何使用变换矩阵(旋转,平移等)的概念...
    • MATLAB基础
      一本学习matlab的一本好书
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • matlabruntime
      通过奇点容器运行您的matlab项目 可以在没有MATLAB的容器中运行matlab代码。 为此,我们首先需要通过Matlab编译器在本地构建相应的Matlab代码的独立应用程序,然后使用具有Matlab运行时( 的容器)运行该应用程序 )...
    • matlab实现
      matlab实现 matlab实现matlab实现matlab实现matlab实现
    • matlab 教程
      matlab 信号处理资料,里面包含信号处理pdf文档,一些杂乱的程序和命令等
    • matlab教程
      matlab教程,PPT格式,包含 matlab基本知识、matlab入门、matlab作图、线性规划、无约束优化、非线性规划、统计工具箱、差值、微分方程等多项知识点,并且每个知识点独立成为PPT,内还含有matlab信号处理详解等文档...
    • matlab简介
      1.MATLAB 开发环境 1.1 MATLAB 的视窗环境 进入MATLAB之后,会看到一个视窗MATLAB Command Window称为指令视窗,它是你键入指令的地方同时 MATLAB也将计算结果显示在此。 1.2 简易计算 我们先从MATLAB的...