![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
matlab
文章平均质量分 88
工作或生活中偶尔用到的matlab算法实现记录
john_xia
17岁的编程少年
展开
-
带权二部图匹配(KM算法)讲解及Matlab实现
在现实生活中经常会遇见匹配问题需要解决,我们手中有两种资源如何让他们之间的组合最优。举个例子,你是联谊会的执行人,联谊上有一群男生和一群女生,每个人都对自己心目中的对象有明确要求,如身高籍贯等,你已知了每个人的个人信息和他们提出的要求,怎么才能凑出更多对符合对方期望的配对。或者,你是租车行的老板,你手上有N台车,各自配置不同,有豪华跑车,有越野型的,有商务SUV等等,每一种类型可能不止一辆。今天来了M位顾客,每位顾客的要求也明确,有的就要租越野车,有的要租SUV。你现在面临的问题就是怎么把顾客和车进行配原创 2021-05-25 14:07:53 · 6114 阅读 · 16 评论 -
使用matlab建立Kd-tree及最近邻查询
之前写过一篇使用matlab建立Kd-tree并进行k-NN查询。之前写完之后没怎么测试就直接丢上来了,这些天有人后台私信问相关的问题后才发现搜索算法的实现好像有一些问题,而且整体代码比较杂乱,想着重新实现一遍,因此有了这篇。原创 2022-04-21 14:25:18 · 3529 阅读 · 2 评论 -
使用matlab对二部图进行匹配(匈牙利算法)
使用matlab应用匈牙利算法对二部图进行匹配。算法的代码主体来自知乎用户洪九(李戈)的专栏文章策略算法工程师之路-图优化算法(一)(二分图&最小费用最大流)具体算法思想文章里和其它地方都有,不在这里赘述。主要通过例子来说明算法具体运行过程中所作的操作对匈牙利算法进行说明。首先对于如下图的一个二部图左侧有6个点,右侧有7个点,点之间的边都画出来了。第一步:对x1x_1x1进行匹配,找到它的第一个可匹配项y1y_1y1,发现此时y1y_1y1还未被匹配,因此将x1x_1x1和y1y原创 2021-05-19 13:59:51 · 3816 阅读 · 9 评论 -
使用matlab生成迷宫
使用matlab生成迷宫,利用深度优先搜索凿穿墙壁遍历迷宫中的可通行点并保证路线不重合。clcclear% 生成迷宫矩阵puzz并初始化% puzz中的元素:0代表墙,2代表没经过的空地,1代表走过的空地puzz = 2 * ones(101, 101);index1 = 1: 2: size(puzz, 1);index2 = 1: 2: size(puzz, 2);puzz(index1, :) = 0;puzz(:, index2) = 0;puzz(1, :) = 0;puzz原创 2020-11-11 13:47:00 · 2639 阅读 · 1 评论 -
使用matlab应用动态规划算法走迷宫
使用matlab应用动态规划算法走迷宫,并回溯出最短路径。clcclearclose% 读取迷宫图像Picture = imread('test.png');Data = rgb2gray(Picture);puzzle = Data;% 设置起点start_p = [16,21];queue = start_p;range = 0;result = nan(size(puzzle));result(Data < 100) = -1;direction = nan(size原创 2020-11-09 16:25:50 · 2437 阅读 · 5 评论 -
使用matlab将UKF应用于六维匀加速直线运动目标跟踪系统
将UKF应用于六维匀加速直线运动目标跟踪系统% UKF在六维匀加速直线运动目标跟踪系统中的应用% ukf_for_track_6_div_system%% 初始化参数设定% 状态位数n = 6;% 采样时间t = 0.5;% 过程噪声协方差矩阵Q = [1 0 0 0 0 0; 0 1 0 0 0 0; 0 0 0.01 0 0 0; 0 0 0 0.01 0 0; 0 0 0 0 0.0001 0; 0 0 0 0 0 0.0001];% 测量噪原创 2020-10-10 17:14:00 · 1247 阅读 · 6 评论 -
使用matlab将无迹卡尔曼应用于目标跟踪
将无迹卡尔曼应用于目标跟踪% 无迹卡尔曼在目标跟踪中的应用% UKF_Dist_CVclcclear%% 初始化参数% 雷达扫描周期T = 1;% 总的采样次数N = 60/T;% 目标的真实位置、速度X = zeros(4,N);% 目标的初始位置、速度X(:,1) = [-100, 2, 200, 20];% 传感器对位置的观测Z = zeros(1,N);% 如果增大这个参数,目标轨迹就是曲线了delta_w = 1e-3;% 过程噪声均值Q = delta_w原创 2020-10-10 17:11:34 · 1627 阅读 · 0 评论 -
使用matlab将粒子滤波应用于非高斯模型目标跟踪系统
将粒子滤波应用于非高斯模型目标跟踪系统% 粒子滤波应用于非高斯模型目标跟踪系统clcclearclose all%% 初始化相关参数% 采样点数M = 100;% 采样间隔T = 1;% 粒子数N = 100;% 蒙特卡洛仿真次数number = 10;% 目标运动初始状态x0 = 50000;y0 = 50000;vx = 300;vy = -100;% 过程噪声标准差delta_w = 0.1;% 闪烁噪声下观测距离标准差delta_r = 50;% 热噪原创 2020-10-10 17:08:10 · 811 阅读 · 0 评论 -
使用matlab将粒子滤波应用于高斯模型目标跟踪系统
将粒子滤波应用于高斯模型目标跟踪系统% 粒子滤波应用于高斯模型目标跟踪系统clcclearclose allrandn('seed', 4);rand('seed', 7);% 采样周期T = 1;% 采样点数M = 30;% 过程噪声调整参数,设置得越大,目标运行得机动性越大,轨迹越随意delta_w = 1e-4;% 过程噪声均方差Q = delta_w * diag([0.5, 1, 0.5, 1]);% 观测距离均方差R = 0.25;F = [1 T 0 0;原创 2020-10-10 17:03:14 · 758 阅读 · 0 评论 -
使用matlab对输入数据进行卡尔曼滤波
使用matlab对输入数据进行卡尔曼滤波。简单说明一下程序中的数据。假设一辆汽车从初始点(0,10)开始行驶,初始速度沿y轴正方向10m/s。然后在观测途中向右先加速再减速变换车道。整个过程其实有x轴坐标,y轴坐标,x轴速度,y轴速度以及x轴的加速度这5个物理量。但在卡尔曼滤波时我只用了x轴坐标,y轴坐标,x轴速度,y轴速度这4个量,相当于将x轴的人为施加的加速度当作了噪声处理。人为施加的加速度当然不符合高斯分布,有违卡尔曼滤波的假设,这里只是为现实应用直接处理的。有兴趣的可以把x轴的加速度这个量也纳入原创 2020-08-05 15:42:51 · 5037 阅读 · 1 评论 -
使用matlab进行DBscan聚类
使用matlab对输入数据进行DBscan聚类。算法的思想来自基于密度方法的聚类clear;close all;clc;k = 3;Eps = 2;%% 生成模拟数据n = 200;a = linspace(0,8*pi,n/2);u = [5*cos(a)+5 10*cos(a)+5]'+1*rand(n,1);v = [5*sin(a)+5 10*sin(a)+5]'+1*rand(n,1);mu1 = [20 20];S1 = [10 0;0 10];data1 = mvn原创 2020-07-29 13:39:25 · 12574 阅读 · 3 评论 -
使用matlab进行K-means聚类
使用matlab对输入数据进行K-means聚类。算法的思想来自基于密度方法的聚类clear;close all;clc;k = 4;step_Tolerance = 0.001;%% 生成数据mu1 = [20 20];S1 = [10 0;0 10];data1 = mvnrnd(mu1,S1,100);mu2 = [80 80];S2 = [20 0;0 30];data2 = mvnrnd(mu2,S2,200);mu3 = [20 80];S3 = [20 0;0 1原创 2020-07-29 13:36:37 · 1977 阅读 · 1 评论 -
使用matlab建立Kd-tree并进行k-NN查询
使用matlab对输入数据建立Kd-tree并通过Kd-tree进行k-NN查询。k-NN查询的主要算法思路来自【量化课堂】kd 树算法之详细篇clear;close all;clc;% 生成数据data = [2 3; 5 4; 9 6; 4 7; 8 1; 7 2];% 给数据标号for i = 1: size(data,1) data(i,3) = i;end% 建立Kd树Kd_tree = Kd_tree_create(data)原创 2020-07-24 15:57:29 · 5755 阅读 · 7 评论 -
使用matlab进行RANSAC直线检测
在一堆随机点中隐藏一条直线,通过RANSAC方法检测出来。clearclose allclc%% 生成30个随机点,然后添加11个点的直线,打乱点的顺序Points = rand(30,2);line = 0:0.1:1;y = 0.5 * line + 0.1 + (rand(1,11)-0.5)/50;Points = [Points; cat(1, line, y)'];scatter(Points(:,1), Points(:,2), 10, 'k', 'filled');h原创 2020-07-22 17:30:23 · 1386 阅读 · 0 评论 -
使用matlab实现点云匹配(ICP算法)
代码主体和数据文件satellite.txt来自JusticeZQ的博客加入了自己的修改,参数设置在代码的最前面,可以选择kd-tree或者暴力计算最近邻点。% 程序说明:输入data_source和data_target两个点云,找寻将data_source映射到data_targe的旋转和平移参数clear;close all;clc;%% 参数配置kd = 1;inlier_ratio = 0.9;Tolerance = 0.001;step_Tolerance = 0.0001;原创 2020-07-22 17:22:28 · 10766 阅读 · 32 评论