求解答:UKF对路面附着系数估计报错
报错内容:Error in 'UKF_myself/S-Function' while executing MATLAB S-function 'UKFyself', flag = 2 (update), at time 0.0.
debug session was interrupted.
翻译过来就是,flag=2,输入参数数目不足
function [sys,x0,str,ts] = UKFyself(t,x,u,flag)
global Zdist
global Xukf
global Q
global R
Q=eye(4); %过程噪声协方差矩阵
R=0.01*eye(4);%测量噪声的协方差矩阵
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
case 2
sys=mdlUpdate(t,x,u,Q,R);
case 3
sys=mdlOutputs(t,x,u);
case {1,4}
sys=[];
case 9
save('Xukf','Xukf');
save('Zdist','Zdist');
otherwise
error(['Unhandled flag=', num2str(flag)]);
end
%带X的矩阵中只有u_fl,u_fr,u_rl,u_rr
% 观测函数调用格式b(1,1,1,1,1,1,1,1,pi/6,a(1,1,1,1))
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 4;%离散状态变量的个数
sizes.NumOutputs = 4;%输出是4个路面附着系数
sizes.NumInputs = 9;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [0.8;0.8;0.8;0.8];%路面附着系数的初始值,调试成功后试一下全写0行不行
str = [];
ts = [-1 0];
global Zdist; %观测信息
Zdist=[];
global Xukf;
Xukf=x0;
global P;
P=0.01*eye(4);
function sys=mdlUpdate(t,x,u,Q,R)%sys=x(n+1)=A*x(n)+B*u(n)
global Xukf;
global P;
global Zdist;
F_xfl = u(1);
F_xfr = u(2);
F_xrl = u(3);
F_xrr = u(4);
F_yfl = u(5);
F_yfr = u(6);
F_yrl = u(7);
F_yrr = u(8);
delta_f= (pi/180)*u(9);
Z=b(F_xfl,F_yfl,F_xfr,F_yfr,F_xrl,F_yrl,F_xrr,F_yrr,delta_f)*x;
Zdist=[Zdist,Z];%保存观测信息
Xin=Xukf(:,length(Xukf(1,:)));
a=1;
[Xnew,P]=GetUkfResult(Xin,u,P,Q,R);%%%%%%%%%%%%%%%%%%%%%%%%%断点报错
Xukf=[Xukf,Xnew];
sys=Xnew;
function sys=mdlOutputs(t,x,u)%sys=y=C*x(n+1)+D*u(n+1)
sys =x;
function [Xout,P]=GetUkfResult(Xin,Z,P,Q,R)
L=4; %3
alpha=0.01;
kalpha=0;
belta=2;
ramda=alpha^2*(L+kalpha)-L;
for j=1:2*L+1
Wm(j)=1/(2*(L+ramda));
Wc(j)=1/(2*(L+ramda));
end
Wm(1)=ramda/(L+ramda);
Wc(1)=ramda/(L+ramda)+1-alpha^2+belta;
xestimate=Xin;
cho=(chol(P*(L+ramda)))';
for k=1:L
xgamaP1(:,k)=xestimate+cho(:,k);
xgamaP2(:,k)=xestimate-cho(:,k);
end
Xsigma=[xestimate,xgamaP1,xgamaP2];
for k=1:2*L+1
Xsigmapre(:,k)=a(Xsigma(:,k));
end
Xpred=zeros(4,1);
for k=1:2*L+1
Xpred=Xpred+Wm(k)*Xsigmapre(:,k);
end
Ppred=zeros(4,4);
for k=1:2*L+1
Ppred=Ppred+Wc(k)*(Xsigmapre(:,k)-Xpred)*(Xsigmapre(:,k)-Xpred)';
end
Ppred=Ppred+Q;
chor=(chol((L+ramda)*Ppred))';
for k=1:L
XaugsigmaP1(:,k)=Xpred+chor(:,k);
XaugsigmaP2(:,k)=Xpred-chor(:,k);
end
Xaugsigma=[Xpred XaugsigmaP1 XaugsigmaP2];
for k=1:2*L+1
Zsigmapre(1,k)=b(F_xfl,F_yfl,F_xfr,F_yfr,F_xrl,F_yrl,F_xrr,F_yrr,delta_f)*Xaugsigma(:,k);
end
Zpred=0;
for k=1:2*L+1
Zpred=Zpred+Wm(k)*Zsigmapre(1,k);
end
Pzz=0;
for k=1:2*L+1
Pzz=Pzz+Wc(k)*(Zsigmapre(1,k)-Zpred)*(Zsigmapre(1,k)-Zpred)';
end
Pzz=Pzz+R;
Pxz=zeros(4,1);
for k=1:2*L+1
Pxz=Pxz+Wc(k)*(Xaugsigma(:,k)-Xpred)*(Zsigmapre(1,k)-Zpred)';
end
%滤波框架
K=Pxz*inv(Pzz);
Xout=Xpred+K*(Z-Zpred);
P=Ppred-K*Pzz*K';
求解答:UKF对路面附着系数估计报错相关推荐
- 路面附着系数估计_无迹 扩展卡尔曼滤波(UKF/EKF) 采用无迹/扩展卡尔曼滤波UKF进行路面附着系数估计,可实现“不变路面,对接路面和对开路面”等工况的路面附着系数估计
路面附着系数估计_无迹?扩展卡尔曼滤波(UKF/EKF) 软件使用:Matlab/Simulink 适用场景:采用无迹/扩展卡尔曼滤波UKF进行路面附着系数估计,可实现"不变路面,对接路面和 ...
- 路面附着系数估计_无迹?扩展卡尔曼滤波(UKF EKF)
路面附着系数估计_无迹?扩展卡尔曼滤波(UKF EKF) 软件使用:Matlab Simulink 适用场景:采用无迹 扩展卡尔曼滤波UKF进行路面附着系数估计,可实现"不变路面,对接路面和 ...
- 路面附着系数估计_无迹扩展卡尔曼滤波(UKF EKF)
路面附着系数估计_无迹扩展卡尔曼滤波(UKF EKF) 软件使用:Matlab Simulink 适用场景:采用无迹 扩展卡尔曼滤波UKF进行路面附着系数估计,可实现"不变路面,对接路面和对 ...
- 基于simulink的路面附着系数估计模型, 滑转率零斜率法
出 基于simulink的路面附着系数估计模型, 滑转率零斜率法 ID:8634645145422904是命a
- MindSpore求导传入sens值时infer报错For ‘MatMul‘, the input dimensions
1 报错描述 1.1 系统环境 Hardware Environment(Ascend/GPU/CPU): GPU Software Environment: MindSpore version (s ...
- MindSpore求导传入sens值时infer报错For apos;MatMulapos;, the input dimensions
1 报错描述 1.1 系统环境 Hardware Environment(Ascend/GPU/CPU): GPU Software Environment: MindSpore version (s ...
- npm 报错:`[HPM] Error occurred while trying to proxy request (ECONNREFUSED)`
npm 报错:[HPM] Error occurred while trying to proxy request /users from localhost:8000 to https://loca ...
- php %3c%3c%3cxml 报错,Web for Pentester XXE解析
基础 XML基础 XML(Extensible Markup Language)用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言 ...
- hive报错return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
场景:计算一年中每一天的数据,每一天的取值是前一年或者半年的平均值,所以我有两张临时表,第一张存放主体的一年中每一天的数据,第二张存放主体近两年的每一天对应的数据,第一张表左连接第二张表,这样子进行窗 ...
最新文章
- 教程:10、VI编辑器
- python学习--DAY2
- HardwareSoftwareTutorial
- Securing the Deep Learning Stack
- Python中Numpy库中的Numpy常量
- centOS7安装matlab2014a
- 【CodeForces - 294B】Shaass and Bookshelf(枚举,贪心,思维,组内贪心组间dp)
- shell调用函数并获取函数返回值
- C#LeetCode刷题之#598-范围求和 II​​​​​​​(Range Addition II)
- 【Java并发编程】:Runnable和Thread实现多线程的区别
- 用了Python这么久,你连这个都没试过?
- HDU_1874_畅通工程续_最短路问题
- [OGRE]最小ogre程序的流程
- 国际c语言乱码大赛PDF,国际C 语言乱码大赛(IOCCC)获奖作品
- socket相关的面试题
- Python画五角星(turtle初识)
- 有奖 | 你想要什么样的程序员贴纸?
- JAVA学习6-集合工具类、流
- (转)水经注谷歌地图的级别与对应比例尺及分辨率探究
- 2021年上海值得去的66家规模互联网大厂公司全名简称