代码拉取完成,页面将自动刷新
% 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');
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。