轻量级前端框架助力开发者提升项目效率与性能
581
2022-11-29
二维粒子滤波纯代码
% 参数设置N = 100; %粒子总数Q = 5; %过程噪声R = 5; %测量噪声T = 20; %测量时间theta = pi/T; %旋转角度distance = 80/T; %每次走的距离WorldSize = 100; %世界大小X = zeros(2, T); %存储系统状态Z = zeros(2, T); %存储系统的观测状态P = zeros(2, N); %建立粒子群PCenter = zeros(2, T); %所有粒子的中心位置w = zeros(N, 1); %每个粒子的权重err = zeros(1,T); %误差X(:, 1) = [50; 20]; %初始系统状态%wgn(m,n,p)产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。Z(:, 1) = [50; 20] + wgn(2, 1, 10*log10(R)); %初始系统的观测状态%初始化粒子群for i = 1 : N P(:, i) = [WorldSize*rand; WorldSize*rand];%在worldSize区域内随机生成N个粒子 dist = norm(P(:, i)-Z(:, 1)); %与测量位置相差的距离,用于估算该粒子的权重 %由于上面已经随机生成了N个粒子,现在将其与真实的测量值z进行比较,越接近则权重越大,或者说差值越小权重越大 %这里的权重计算是关于p(z/x)的分布,即观测方程的分布,假设观测噪声满足高斯分布,那么w(i)=p(z/x) w(i) = (1 / sqrt(R) / sqrt(2 * pi)) * exp(-(dist)^2 / 2 / R); %求权重endPCenter(:, 1) = sum(P, 2) / N; %所有粒子的几何中心位置%%err(1) = norm(X(:, 1) - PCenter(:, 1)); %粒子几何中心与系统真实状态的误差figure(1);%利用set(gca,'propertyname','propertyvalue'......)命令可以调整图形的坐标属性。%propertyname和property value分别为坐标属性名称(不区分字母大小写)及对应的属性值。set(gca,'FontSize',10);hold on%使当前及图形保持而不被刷新,准备接受此后将绘制的新曲线plot(X(1, 1), X(2, 1), 'r.', 'markersize',30) %系统状态位置%axis[xmin,xmax,ymin,ymax]设定坐标范围,必须满足xmin
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~