车辆状态估计,容积卡尔曼滤波CKF车辆状态估计,容积卡尔曼滤波CKF (1) 车辆状态估计容积卡尔曼滤波CKF车辆状态估计容积卡尔曼滤波CKF针对乘用车进行车辆运动状态参数估计采用CKF容积卡尔曼滤波算法对车辆的纵向车速、侧向速度、横摆角速度、质心侧偏角、各轮侧向力进行估计157内部附带carsim模型、算法模型、说明文档 MATLAB 绘图复现代码将以下代码复制到 MATLAB 编辑器中运行即可%% 1. 初始化环境clc; clear; close all;% 设置全局字体模仿 Simulink Scope 风格set(0, ‘DefaultAxesFontSize’, 10);set(0, ‘DefaultTextFontSize’, 10);%% 2. 模拟数据生成 (模拟多关节/多通道正弦跟踪)t linspace(0, 4, 1000); % 时间轴 0-4秒% 定义 8 个子图的信号特征 (频率和幅值各不相同模仿图中情况)% 格式: [频率Hz, 幅值]params [1.0, 1.5; % Subplot 1 (左上被遮挡部分)1.5, 3.0; % Subplot 22.0, 6000; % Subplot 3 (大数值可能是电流或力矩)2.0, 6000; % Subplot 41.5, 3.0; % Subplot 51.5, 3.0; % Subplot 61.5, 3.0; % Subplot 72.5, 1000; % Subplot 8];% 预分配数据存储num_plots size(params, 1);data_ref zeros(length(t), num_plots);data_act zeros(length(t), num_plots);% 生成带有微小误差的跟踪数据for i 1:num_plotsfreq params(i, 1);amp params(i, 2);% 参考信号 (理想正弦) data_ref(:, i) amp * sin(2 * pi * freq * t); % 实际信号 (加入极小的相位滞后和幅值衰减模拟真实控制效果) phase_lag 0.02; % 轻微滞后 amp_error 0.98; % 轻微幅值误差 noise 0.01 * amp * randn(size(t)); % 添加微量噪声 data_act(:, i) amp * amp_error * sin(2 * pi * freq * (t - phase_lag)) noise;end%% 3. 绘图 (模仿 Simulink Scope 布局)figure(‘Color’, ‘w’, ‘Position’, [100, 100, 1200, 800]);% 使用 subplot 创建 2行4列 布局 (假设左侧还有一列被截断这里画完整的8个)for i 1:num_plotssubplot(2, 4, i);% 绘制参考值 (青色/浅蓝) plot(t, data_ref(:, i), c-, LineWidth, 1.5); hold on; % 绘制实际值/估计值 (深红/紫色) plot(t, data_act(:, i), [0.6 0.1 0.3], -, LineWidth, 1.5); % 自定义深红色 grid on; box on; % 添加图例 (模仿图中右上角的小框) if i 1 || i 2 % 仅在部分图中显示图例以免太乱或者全部显示 legend(Ref, Est, Location, northeast); end % 设置坐标轴范围 (自动适应) ylim_auto max(abs(data_ref(:, i))) * 1.2; ylim([-ylim_auto, ylim_auto]);endsgtitle(‘Simulation Results: Tracking Performance’, ‘FontSize’, 14); 代码解析数据模拟我构建了 params 矩阵来定义不同子图的频率和幅值。注意看第 3、4 个子图我设置了较大的幅值6000这对应了你原图中中间几个波形数值很大的情况可能是电机电流或力矩。data_act 加入了微小的相位滞后phase_lag和噪声这样红线就不会完全覆盖蓝线从而体现出“跟踪”的效果这与原图一致。颜色匹配参考值使用了 ‘c-’ (Cyan青色)对应原图中的浅蓝色线。实际值使用了 [0.6 0.1 0.3] (深紫红色)对应原图中的深色线。