首页 > 编程语言 >matlab练习程序(无迹变换)

matlab练习程序(无迹变换)

时间:2023-06-22 15:14:17浏览次数:37  
标签:plot 练习 Wm 均值 非线性 mu matlab 无迹

当数据通过非线性函数后,分布不再是高斯分布时,可以用无迹变换估计新数据的均值与方差。

算法原理就是在原始数据均值周围根据方差选取一些待使用点,然后将这些点通过非线性函数,再通过加权平均的方式求出新分布的均值与方差。

如果我们选取的点非常多,并且将这些点都通过非线性函数,再估计均值与方差,那么就是粒子滤波了。

无迹变换的典型算法就是无迹卡尔曼滤波了,我这里只是单纯实验了无迹变换,没有涉及卡尔曼滤波部分,后面有时间应该会写无迹卡尔曼滤波。

无迹变换中选取加权的权重公式我看还挺复杂,并且我不是完全清楚其意义,所以这里直接暴力取权重了,对于实验数据效果还可以。 

matlab代码如下:

clear all;close all;clc;

% 非线性函数:
% xpar = x+y
% ypar = 5*x*x +y*y

x = randn(1000,1)*2;
y = randn(1000,1);

mu = [mean(x);mean(y)];
P = [x y]'*[x y] / length(x);

plot(x,y,'r.')
hold on;
plot(mu(1),mu(2),'b*')

%%%%%%%%%%%%ut变换%%%%%%%%%%%%%%%%%%%%
n = 2;
N = 2*n+1;
Wm = ones(1, N) * 1/(2*(n+1));                      %这里比较暴力直接取权重
Wc = [Wm(1), Wm(2:end)+ones(1, 2*n)*1/(2*(n+1))];

%{
alpha = 0.9;                  %根据公式算权重,需要仔细考虑各个系数
kappa = 2;
beta = 2;
lambda = alpha^2 * (n + kappa) - n;
Wm = zeros(1,2*n+1);
Wc = zeros(1,2*n+1);
Wm(1) = lambda / (n + lambda);
Wc(1) = Wm(1) + (1 - alpha^2 + beta);
for i = 2 : 2*n+1
    Wm(i) = 1 / (2 * (n + lambda));
    Wc(i) = Wm(i);
end
%}

L = chol(P, 'lower');
X = [mu, mu + sqrt(n+1)*L, mu - sqrt(n+1)*L];       %得到原始均值周围的点作为待处理点

Y = zeros(size(X));                                 %待处理点过非线性函数
for i = 1:N
    newx = X(1,i);
    newy = X(2,i);
    Y(1,i) = newx+newy;
    Y(2,i) = 5*newx.^2+newy.^2;
end

mu_hat = Y * Wm';                                   %均值加权平均
P_hat = (Y - mu_hat) * diag(Wc) * (Y - mu_hat)';    %方差加权平均

for i=1:N
  plot(X(1,i),X(2,i),'bo');
end
legend('原始数据点','原始数据均值','ut变换选取的待处理点');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

xpar = x + y;                     %如果所有数据点都过非线性函数再求均值,那就是粒子滤波了
ypar = 5*x.^2+y.^2;

figure;
plot(xpar,ypar,'r.')
hold on;
plot(mean(xpar),mean(ypar),'g*')

xmean = mu(1) + mu(2);            %原始数据点的均值过非线性函数得到的新分布的均值是不对的
ymean = 5*mu(1).^2 + mu(2)^2;
plot(xmean,ymean,'b*');

for i=1:N
  plot(Y(1,i),Y(2,i),'bo');
end
plot(mu_hat(1),mu_hat(2),'go');

legend('非线性函数处理后的原始数据点','非线性函数处理后的原始数据点的均值', ...
'原始数据点的均值过非线性函数后的值','ut变换选取的待处理点过非线性函数后的值','ut变换最终结果(应该是绿圈,算bug吗。。。)');

结果如下:

标签:plot,练习,Wm,均值,非线性,mu,matlab,无迹
From: https://www.cnblogs.com/tiandsp/p/17497695.html

相关文章

  • 含微网的配电网优化调度yalmip 采用matlab编程,以IEEE33节点为算例,编写含sop和3个微网
    含微网的配电网优化调度yalmip采用matlab编程,以IEEE33节点为算例,编写含sop和3个微网的配电网优化调度程序,采用yalmip+cplex这段程序是一个微网系统的建模程序,用于对微网系统进行优化调度。下面我将对程序进行详细的解释和分析。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5......
  • SQL基础命令练习
     1.创建一个名为`mydb`的数据库2.在`mydb`数据库中创建一个名为`users`的表,包含以下字段:`id`(主键,自增长),`name`(字符串,非空),`age`(整数),`gender`(字符串)3.向`users`表中插入一条记录,姓名为`Tom`,年龄为`25`,性别为`男`4.查询`users`表中所有记录5.将`users`表......
  • MATLAB代码:计及绿证交易和综合需求响应的综合能源系统优化调度
    MATLAB代码:计及绿证交易和综合需求响应的综合能源系统优化调度关键词:绿证交易综合需求响应综合能源系统优化调度 原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/693201301720.html仿真平台:matlab+yalmip+cplex主要内容:代码针对综合能源系统低碳运行和源荷互动,考虑可......
  • matlab的基于遗传算法优化bp神经网络多输入多输出预测模型
    matlab的基于遗传算法优化bp神经网络多输入多输出预测模型,有代码和EXCEL数据参考,精度还可以,直接运行即可,换数据OK。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/632809753171.html这个程序是一个基于遗传算法优化的BP神经网络多输入两输出模型。下面我将对程序进行详细分析......
  • MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度
    MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/662283130712.html关键词:用户舒适度综合能源PMV优化调度 仿真平台:MATLAB+yalmip+cplex主要内容:代码主要做的是考虑用户舒适度的冷热电多能互补综合能源系统......
  • 时间序列转图像:符号递归图(Symbolic recurrence plots)(matlab版复现)
    符号递归图(Symbolicrecurrenceplots):是一种以为时间序列转图像技术,可用于平稳和非平稳数据集;对噪声具有鲁棒性,在一定的数据变换条件下具有不变性。结合深度学习技术可以解决能源电力,水利,天气,生物医学,交通等领域的复杂模式识别和监测任务。链接:https://mbd.pub/o/bread/mbd-ZJqY......
  • 练习记录-cf-Codeforces Round 881 (Div. 3)A-F1
    E是补的太蠢了没想到期末考完的复健A.SashaandArrayColoring题意:可以给不同数字涂上很多颜色,每个颜色的贡献是同一个颜色内的数字最大值和最小值的差思路:排序一遍,取头和尾的差#include<bits/stdc++.h>#defineclosestd::ios::sync_with_stdio(false),cin.tie(0)......
  • python 生成小学计算练习 docx
    python3生成二年级下计算练习,有口算,有竖式。 importrandomimportosfromdocx.sharedimportPtfromdocximportDocumentdefcreate_page(document):#口算document.add_paragraph('一、口算')operators='+-×÷'columnsNumber=3rowsNumbe......
  • 旋转高频电压注入PMSM无感控制MATLAB仿真模型,Mat
    旋转高频电压注入PMSM无感控制MATLAB仿真模型,MatID:2238606091675051......
  • 基于matlab的车牌识别系统的研究,图像处理。 基于matlab的
    基于matlab的车牌识别系统的研究,图像处理。基于matlab的车牌识别系统的研究。1:有完整运行代码可以验证2:有完成配套资料,可以直接用。ID:7959598308655028......