精华内容
下载资源
问答
  • 粒子滤波 matlab

    2021-01-08 17:41:02
    粒子滤波 matlab
  • 粒子滤波matlab

    2014-10-23 20:21:51
    粒子滤波matlab
  • 粒子滤波MATLAB实现

    2014-06-20 23:03:15
    一个粒子滤波MATLAB实现例子可以参考
  • 粒子滤波matlab代码

    热门讨论 2013-04-15 20:22:40
    粒子滤波matlab代码,能够运行。Pf粒子滤波实现的目标跟踪程序,可实现针对非高斯噪声情况下的跟踪
  • 粒子滤波算法源于蒙特卡洛思想,即以某事件出现的频率来指代该事件的概率。在粒子滤波过程中,X(t)实际上是通过对大量粒子的状态进行处理得到的。粒子滤波的5个步骤:1)初始状态:用大量粒子模拟X(t),粒子在空间内...

    粒子滤波算法源于蒙特卡洛思想,即以某事件出现的频率来指代该事件的概率。在粒子滤波过程中,X(t)实际上是通过对大量粒子的状态进行处理得到的。

    粒子滤波的5个步骤:

    1)初始状态:用大量粒子模拟X(t),粒子在空间内均匀分布;

    2)预测阶段:根据状态转移方程,每一个粒子得到一个预测粒子;

    3)校正阶段:对预测粒子进行评价,越接近于真实状态的粒子,其权重越大;

    4)重采样:根据粒子权重对粒子进行筛选,筛选过程中,既要大量保留权重大的粒子,又要有一小部分权重小的粒子;

    5)滤波:将重采样后的粒子带入状态转移方程得到新的预测粒子,即步骤2。

    %在二维空间,假设运动物体的一组(非线性)运动位置、速度、加速度数据,用粒子滤波方法进行处理

    %实验室的博客

    % 参数设置

    N = 100; %粒子总数

    Q =

    5; %过程噪声

    R =

    5; %测量噪声

    T =

    10; %测量时间

    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]; %初始系统状态

    Z(:, 1) = [50; 20] + wgn(2, 1,

    10*log10(R)); %初始系统的观测状态

    %初始化粒子群

    for i = 1 : N

    P(:, i) =

    [WorldSize*rand; WorldSize*rand];

    dist =

    norm(P(:, i)-Z(:,

    1)); %与测量位置相差的距离

    w(i) = (1 /

    sqrt(R) / sqrt(2 * pi)) * exp(-(dist)^2 / 2 /

    R); %求权重

    end

    PCenter(:, 1) = sum(P, 2) /

    N; %所有粒子的几何中心位置

    %%

    err(1) = norm(X(:, 1) - PCenter(:,

    1)); %粒子几何中心与系统真实状态的误差

    figure(1);

    set(gca,'FontSize',12);

    hold on

    plot(X(1, 1), X(2, 1), 'r.',

    'markersize',30) %系统状态位置

    axis([0 100 0 100]);

    plot(P(1, :), P(2, :), 'k.',

    'markersize',5); %各个粒子位置

    plot(PCenter(1, 1), PCenter(2, 1), 'b.', 'markersize',25);

    %所有粒子的中心位置

    legend('True State', 'Particles', 'The Center of Particles');

    title('Initial State');

    hold off

    a4c26d1e5885305701be709a3d33442f.png

    %%

    %开始运动

    for k = 2 : T

    %模拟一个弧线运动的状态

    X(:, k) =

    X(:, k-1) + distance * [(-cos(k * theta)); sin(k * theta)] + wgn(2,

    1,

    10*log10(Q)); %状态方程

    Z(:, k) =

    X(:, k) + wgn(2, 1,

    10*log10(R)); %观测方程 %粒子滤波

    %预测

    for i = 1 :

    N

    P(:, i) = P(:, i) + distance * [-cos(k * theta); sin(k * theta)] +

    wgn(2, 1, 10*log10(Q));

    dist = norm(P(:, i)-Z(:,

    k)); %与测量位置相差的距离

    w(i) = (1 / sqrt(R) / sqrt(2 * pi)) * exp(-(dist)^2 / 2 /

    R); %求权重

    end

    %归一化权重

    wsum =

    sum(w);

    for i = 1 :

    N

    w(i) = w(i) / wsum;

    end

    %重采样(更新)

    for i = 1 :

    N

    wmax = 2 * max(w) * rand; %另一种重采样规则

    index = randi(N, 1);

    while(wmax > w(index))

    wmax = wmax - w(index);

    index = index + 1;

    if index > N

    index = 1;

    end end

    P(:, i) = P(:,

    index); %得到新粒子

    end

    PCenter(:,

    k) = sum(P, 2) /

    N; %所有粒子的中心位置

    %计算误差

    err(k) =

    norm(X(:, k) - PCenter(:,

    k)); %粒子几何中心与系统真实状态的误差

    figure(2);

    set(gca,'FontSize',12);

    clf;

    hold

    on

    plot(X(1,

    k), X(2, k), 'r.', 'markersize',50); %系统状态位置

    axis([0 100

    0 100]);

    plot(P(1,

    :), P(2, :), 'k.',

    'markersize',5); %各个粒子位置

    plot(PCenter(1, k), PCenter(2, k), 'b.', 'markersize',25);

    %所有粒子的中心位置

    legend('True

    State', 'Particle', 'The Center of Particles');

    hold

    off

    pause(0.1);

    end

    %%

    figure(3);

    set(gca,'FontSize',12);

    plot(X(1,:), X(2,:), 'r', Z(1,:), Z(2,:), 'g', PCenter(1,:),

    PCenter(2,:), 'b-');

    axis([0 100 0 100]);

    legend('True State', 'Measurement', 'Particle Filter');

    xlabel('x', 'FontSize', 20); ylabel('y', 'FontSize', 20);

    a4c26d1e5885305701be709a3d33442f.png

    %%

    figure(4);

    set(gca,'FontSize',12);

    plot(err,'.-');

    xlabel('t', 'FontSize', 20);

    title('The err');

    a4c26d1e5885305701be709a3d33442f.png

    如果你有所收获,欢迎用微信扫一扫进行打赏,赏金随意。

    a4c26d1e5885305701be709a3d33442f.png

    展开全文
  • 粒子滤波matlab程序集锦

    热门讨论 2014-05-23 18:08:54
    粒子滤波matlab程序集锦,93年经典论文复刻版,高斯粒子滤波,经典粒子滤波程序。
  • 粒子滤波matlab实现

    2015-07-21 21:17:33
    一个很形象的描述粒子滤波算法的MATLAB程序,动态演示,有助于理解粒子滤波的运行机制
  • 粒子滤波Matlab代码

    千次阅读 2015-08-13 11:09:39
    粒子滤波Matlab代码,很详实。看完秒懂! 本文地址:http://blog.csdn.net/shanglianlm/article/details/47445909

    粒子滤波Matlab代码,很详实。看完秒懂!

    本文地址:http://blog.csdn.net/shanglianlm/article/details/47445909

    % 参数设置
    N = 100;   %粒子总数
    Q = 5;      %过程噪声
    R = 5;      %测量噪声
    T = 10;     %测量时间
    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];     %初始系统状态
    Z(:, 1) = [50; 20] + wgn(2, 1, 10*log10(R));    %初始系统的观测状态
    
    %初始化粒子群
    for i = 1 : N
        P(:, i) = [WorldSize*rand; WorldSize*rand];
        dist = norm(P(:, i)-Z(:, 1));     %与测量位置相差的距离
        w(i) = (1 / sqrt(R) / sqrt(2 * pi)) * exp(-(dist)^2 / 2 / R);   %求权重
    end
    PCenter(:, 1) = sum(P, 2) / N;      %所有粒子的几何中心位置
    
    %%
    err(1) = norm(X(:, 1) - PCenter(:, 1));     %粒子几何中心与系统真实状态的误差
    figure(1);
    set(gca,'FontSize',10);
    hold on
    plot(X(1, 1), X(2, 1), 'r.', 'markersize',30)   %系统状态位置
    axis([0 100 0 100]);
    plot(P(1, :), P(2, :), 'kx', 'markersize',5);   %各个粒子位置
    plot(PCenter(1, 1), PCenter(2, 1), 'b.', 'markersize',25); %所有粒子的中心位置
    legend('True State', 'Particles', 'The Center of Particles');
    title('Initial State');
    hold off
    
    %%
    %开始运动
    for k = 2 : T
    
        %模拟一个弧线运动的状态
        X(:, k) = X(:, k-1) + distance * [(-cos(k * theta)); sin(k * theta)] + wgn(2, 1, 10*log10(Q));     %状态方程
        Z(:, k) = X(:, k) + wgn(2, 1, 10*log10(R));     %观测方程 
    
        %粒子滤波
        %预测
        for i = 1 : N
            P(:, i) = P(:, i) + distance * [-cos(k * theta); sin(k * theta)] + wgn(2, 1, 10*log10(Q));
            dist = norm(P(:, i)-Z(:, k));     %与测量位置相差的距离
            w(i) = (1 / sqrt(R) / sqrt(2 * pi)) * exp(-(dist)^2 / 2 / R);   %求权重
        end
    %归一化权重
        wsum = sum(w);
        for i = 1 : N
            w(i) = w(i) / wsum;
        end
    
        %重采样(更新)
        for i = 1 : N
            wmax = 2 * max(w) * rand;  %另一种重采样规则
            index = randi(N, 1);
            while(wmax > w(index))
                wmax = wmax - w(index);
                index = index + 1;
                if index > N
                    index = 1;
                end          
            end
            P(:, i) = P(:, index);     %得到新粒子
        end
    
        PCenter(:, k) = sum(P, 2) / N;      %所有粒子的中心位置
    
        %计算误差
        err(k) = norm(X(:, k) - PCenter(:, k));     %粒子几何中心与系统真实状态的误差
    
        figure(2);
        set(gca,'FontSize',12);
        clf;
        hold on
        plot(X(1, k), X(2, k), 'r.', 'markersize',50);  %系统状态位置
        axis([0 100 0 100]);
        plot(P(1, :), P(2, :), 'k.', 'markersize',5);   %各个粒子位置
        plot(PCenter(1, k), PCenter(2, k), 'b.', 'markersize',25); %所有粒子的中心位置
        legend('True State', 'Particle', 'The Center of Particles');
        hold off
        pause(0.1);
    end
    
    %%
    figure(3);
    set(gca,'FontSize',12);
    plot(X(1,:), X(2,:), 'r', Z(1,:), Z(2,:), 'g', PCenter(1,:), PCenter(2,:), 'b-');
    axis([0 100 0 100]);
    legend('True State', 'Measurement', 'Particle Filter');
    xlabel('x', 'FontSize', 20); ylabel('y', 'FontSize', 20);
    
    %%
    figure(4);
    set(gca,'FontSize',12);
    plot(err,'.-');
    xlabel('t', 'FontSize', 20);
    title('The err');

    转自:http://blog.sina.com.cn/s/blog_86186c970101tn0o.html

    展开全文
  • 粒子群粒子滤波matlab代码这是一个从中下载代码的脚本。 您可以像这样使用它: $ python scrape.py --to=downloads/ --num_projects=10 --sort=downloads_desc Downloading 23629-exportfig... done. Downloading ...
  • 给出以个标准的粒子滤波MATLAB代码实现方案,希望能帮助初学者更好的理解粒子滤波,请多多指教
  • 粒子滤波matlab工具箱

    热门讨论 2010-02-16 14:10:04
    粒子滤波matlab工具箱,用来学习粒子滤波
  • 粒子滤波matlab 程序

    2011-05-20 16:41:22
    粒子滤波程序为一维粒子滤波程序,对于粒子滤波的学习有一定的帮助
  • 粒子滤波matlab程序

    2013-12-05 15:16:01
    很简单的一维粒子滤波程序,可以辅助算法学习
  • 粒子滤波matlab仿真

    2018-10-20 15:58:13
    粒子滤波 先搞清这个概率的含义,它表示在状态x出现的条件下,测量y出现的概率。在机器人定位里面就是,在机器人处于位姿x时,此时传感器数据y出现的概率。更简单的例子是,我要找到一个年龄是14岁的男孩(状态x),...
  • 粒子滤波Matlab代码有中间对一些变量有详细解释说明
  • MATLAB粒子滤波,Particle Filter,Sampling Importance Resampling Filter,跟踪,预测,
  • 主要是一个关于matlab实现粒子滤波的代码,如目标追踪等。
  • 正则化粒子滤波算法用matlab程序实现,滤波跟踪比较
  • 粒子滤波matlab算法

    2009-05-06 15:16:38
    粒子滤波正在得到重视,越来越的人开始注意,在故障诊断和预测领域里,用来估计状态参数。附件中matlab程序介绍了基本粒子滤波算法
  • 粒子滤波MATLAB程序

    2012-02-29 10:51:00
    粒子滤波MATLAB程序,有中文解释 (2009-06-13 10:12:19) 转载▼ 标签: 杂谈 分类:无线定位 参考网站:...

    粒子滤波MATLAB程序,有中文解释

     (2009-06-13 10:12:19)
    标签: 

    杂谈

    分类: 无线定位
    x = 0; % 初始状态
    R = input('请输入过程噪声方差R的值: ');; % 测量噪声协方差 
    Q = input('请输入观测噪声方差Q的值: '); % 过程状态协方差
    tf = 100; % 模拟长度
    N = 100; % 粒子滤波器中的粒子个数
    xhat = x;
    P = 2;
    xhatPart = x;
     
    %粒子滤波器初期
    for i = 1 : N
        xpart(i) = x + sqrt(P) * randn;
    end
    xArr = [x];
    yArr = [x^2 / 20 + sqrt(R) * randn];
    xhatArr = [x];
    PArr = [P];
    xhatPartArr = [xhatPart];
    close all;
     
    for k = 1 : tf
        % 模拟系统
        x = 0.5 * x + 25 * x / (1 + x^2) + 8 * cos(1.2*(k-1)) + sqrt(Q) * randn;
        y = x^2 / 20 + sqrt(R) * randn;
       % 粒子滤波器
        for i = 1 : N
            xpartminus(i) = 0.5 * xpart(i) + 25 * xpart(i) / (1 + xpart(i)^2) + 8 * cos(1.2*(k-1)) + sqrt(Q) * randn;
            ypart = xpartminus(i)^2 / 20;
            vhat = y - ypart;% 观测和预测的差
            q(i) = (1 / sqrt(R) / sqrt(2*pi)) * exp(-vhat^2 / 2 / R);
        end
        % 平均每一个估计的可能性
        qsum = sum(q);
        for i = 1 : N
            q(i) = q(i) / qsum;%归一化权值
        end
       % 重采样
        for i = 1 : N
            u = rand; 
            qtempsum = 0;
            for j = 1 : N
                qtempsum = qtempsum + q(j);
                if qtempsum >= u
                    xpart(i) = xpartminus(j);
                    break;
                end
            end
        end
       
        xhatPart = mean(xpart);
       
       % 在图片中表示出数据
        xArr = [xArr x];
        yArr = [yArr y];
        xhatArr = [xhatArr xhat];
        PArr = [PArr P];
        xhatPartArr = [xhatPartArr xhatPart];
    end
     
    t = 0 : tf;
     
    figure;
    plot(t, xArr, 'b.', t, xhatPartArr, 'k-');
    set(gca,'FontSize',10); set(gcf,'Color','yellow'); 
    xlabel('time step'); ylabel('state');
    legend('真实值', 'PF估计值');

    xhatRMS = sqrt((norm(xArr - xhatArr))^2 / tf);
    xhatPartRMS = sqrt((norm(xArr - xhatPartArr))^2 / tf);
    disp(['PF估计误差均方值 = ', num2str(xhatPartRMS)]);

    转载于:https://www.cnblogs.com/william-kf-young/archive/2012/02/29/2372972.html

    展开全文
  • 粒子滤波Matlab示例

    2021-03-09 22:19:57
    http://blog.sina.com.cn/s/blog_86186c970101tn0o.html
    展开全文
  • 二维粒子滤波matlab x程序

    热门讨论 2010-09-01 19:37:03
    最近做了一个二维的粒子滤波的程序,是关于二维空间的目标运动的,分享一下
  • 文件名称: Particle-Filter-Toolbox下载 收藏√ [5 4 3 2 1]开发工具: matlab文件大小: 9708 KB上传时间: 2014-04-03下载次数: 20提 供 者: Star详细说明:Matlab最新最完整的粒子滤波工具箱,建议在matlab7.X环境下...
  • RBMCDAbox - Matlab Toolbox of Rao-Blackwellized Data Association Particle Filters In this paper we present a documentation for Matlab toolbox consisting of Rao-Blackwellized particle filtering based ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,523
精华内容 609
关键字:

粒子滤波matlab

matlab 订阅