1 Star 0 Fork 0

云海/Mat_Learn

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
kalman.asv 2.02 KB
一键复制 编辑 原始数据 按行查看 历史
云海 提交于 2024-09-18 00:29 . 。。。
% kalman filter
% X(K)=F*X(K-1)+Q
% Y(K)=H*(K)+R
% 第一个问题,生成一段随机信号,并滤波
% 生成一段时间 t
t = 0.1:0.01:1; % 从 0.1 秒开始 间隔 0.01秒,到 1 秒结束
L=length(t);
% 生成真实信号 x,以及观测 y
% 首先初始化
x = zeros(1, L); % 一行 L 列的数组,每个值都是 0
y = x;
% 生成信号,设 x = t^2
for i = 1:L
x(i) = t(i)^2;
y(i) = x(i) + normrnd(0, 0.1); % 正态分布生成函数,参数为期望和标准差
end
%%%%%%%%%%%%%信号生成完毕%%%%%%%%%%%%%
% plot(t, x, t, y, 'LineWidth', 2);
%%%%%%%%%%%%%滤波算法%%%%%%%%%%%%%
%%%%%%预测方程观测方程怎么写?%%%%%%
% 观测方程好写 Y(K) = X(K) + R R~N(0, 1)
% 预测方程不好写
% 在这里,可以猜一猜线性表现是怎样的
% 大多数实际问题中,信号是杂乱无章的,怎么办?
% 模型一,最粗糙的建模
% X(K) = X(K-1) + Q;
% Y(K) = X(K) + R;
% Q ~ N(0, 1);
F_1 = 1;
H_1 = 1;
Q_1 = 1;
R_1 = 1;
% 初始化 X(K)+
X_plus_1 = zeros(1, L); % plus: + ; minus: - ;
% 我们会经常用到 X_plus, X_minus, P_plus, P_minus;
% 设置一个初值,设置 X_plus_1(1) ~ N(0.01, 0)
% plot(t, y, "LineWidth", 2);
% 单独绘制观测值的散点图和连续线
figure(1);
% 绘制散点
scatter(t, y, 30, 'r', 'filled', 'DisplayName', 'Noisy Observation (Points)');
hold on; % 保持当前图形,以便添加更多元素
% 绘制连续线
plot(t, y, 'b-', 'LineWidth', 1.5, 'DisplayName', 'Noisy Observation (Line)');
% 设置图形属性
xlabel('Time');
ylabel('Value');
title('Noisy Observation: Points and Line');
legend('show');
grid on;
% 调整图形以更好地显示
xlim([min(t) max(t)]); % 设置 x 轴范围
ylim([min(y)-0.1 max(y)+0.1]); % 设置 y 轴范围,稍微扩大以便更好地显示所有点
% 可选:添加真实信号的线
plot(t, x, 'g--', 'LineWidth', 1.5, 'DisplayName', 'True Signal');
% 调整图例位置(可选)
legend('Location', 'best');
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/LuIrara/Mat_Learn.git
git@gitee.com:LuIrara/Mat_Learn.git
LuIrara
Mat_Learn
Mat_Learn
main

搜索帮助