<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[john_xia的博客]]></title><description><![CDATA[随意写写]]></description><link>https://blog.youkuaiyun.com/john_xia</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; john_xia]]></copyright><item><title><![CDATA[实时读取和保存串口数据问题解决记录（附Windows和Linux下的代码）]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/129197128</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/129197128</guid><author>john_xia</author><pubDate>Fri, 24 Feb 2023 11:48:50 +0800</pubDate><description><![CDATA[简单记录一下实时读取和保存串口数据问题中踩过的坑]]></description><category></category></item><item><title><![CDATA[使用matlab建立Kd-tree及最近邻查询]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/124320307</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/124320307</guid><author>john_xia</author><pubDate>Thu, 21 Apr 2022 14:25:18 +0800</pubDate><description><![CDATA[之前写过一篇使用matlab建立Kd-tree并进行k-NN查询。之前写完之后没怎么测试就直接丢上来了，这些天有人后台私信问相关的问题后才发现搜索算法的实现好像有一些问题，而且整体代码比较杂乱，想着重新实现一遍，因此有了这篇。]]></description><category></category></item><item><title><![CDATA[带权二部图匹配（KM算法）讲解及Matlab实现]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/117247980</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/117247980</guid><author>john_xia</author><pubDate>Tue, 25 May 2021 14:07:53 +0800</pubDate><description><![CDATA[在现实生活中经常会遇见匹配问题需要解决，我们手中有两种资源如何让他们之间的组合最优。
举个例子，你是联谊会的执行人，联谊上有一群男生和一群女生，每个人都对自己心目中的对象有明确要求，如身高籍贯等，你已知了每个人的个人信息和他们提出的要求，怎么才能凑出更多对符合对方期望的配对。
或者，你是租车行的老板，你手上有N台车，各自配置不同，有豪华跑车，有越野型的，有商务SUV等等，每一种类型可能不止一辆。今天来了M位顾客，每位顾客的要求也明确，有的就要租越野车，有的要租SUV。你现在面临的问题就是怎么把顾客和车进行配]]></description><category></category></item><item><title><![CDATA[使用matlab对二部图进行匹配（匈牙利算法）]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/117025174</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/117025174</guid><author>john_xia</author><pubDate>Wed, 19 May 2021 13:59:51 +0800</pubDate><description><![CDATA[使用matlab应用匈牙利算法对二部图进行匹配。
算法的代码主体来自知乎用户洪九(李戈)的专栏文章策略算法工程师之路-图优化算法(一)(二分图&amp;最小费用最大流)
具体算法思想文章里和其它地方都有，不在这里赘述。主要通过例子来说明算法具体运行过程中所作的操作对匈牙利算法进行说明。
首先对于如下图的一个二部图

左侧有6个点，右侧有7个点，点之间的边都画出来了。
第一步：对x1x_1x1​进行匹配，找到它的第一个可匹配项y1y_1y1​，发现此时y1y_1y1​还未被匹配，因此将x1x_1x1​和y1y]]></description><category></category></item><item><title><![CDATA[使用matlab生成迷宫]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/109617189</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/109617189</guid><author>john_xia</author><pubDate>Wed, 11 Nov 2020 13:47:00 +0800</pubDate><description><![CDATA[使用matlab生成迷宫，利用深度优先搜索凿穿墙壁遍历迷宫中的可通行点并保证路线不重合。
clc
clear
% 生成迷宫矩阵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]]></description><category></category></item><item><title><![CDATA[使用matlab应用动态规划算法走迷宫]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/109580136</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/109580136</guid><author>john_xia</author><pubDate>Mon, 09 Nov 2020 16:25:50 +0800</pubDate><description><![CDATA[使用matlab应用动态规划算法走迷宫，并回溯出最短路径。
clc
clear
close
% 读取迷宫图像
Picture = imread('test.png');
Data = rgb2gray(Picture);
puzzle = Data;
% 设置起点
start_p = [16,21];
queue = start_p;
range = 0;
result = nan(size(puzzle));
result(Data &lt; 100) = -1;
direction = nan(size]]></description><category></category></item><item><title><![CDATA[使用matlab将UKF应用于六维匀加速直线运动目标跟踪系统]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/109000901</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/109000901</guid><author>john_xia</author><pubDate>Sat, 10 Oct 2020 17:14:00 +0800</pubDate><description><![CDATA[将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];
% 测量噪]]></description><category></category></item><item><title><![CDATA[使用matlab将无迹卡尔曼应用于目标跟踪]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/109000855</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/109000855</guid><author>john_xia</author><pubDate>Sat, 10 Oct 2020 17:11:34 +0800</pubDate><description><![CDATA[将无迹卡尔曼应用于目标跟踪
% 无迹卡尔曼在目标跟踪中的应用
% UKF_Dist_CV
clc
clear
%% 初始化参数
% 雷达扫描周期
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 ]]></description><category></category></item><item><title><![CDATA[使用matlab将粒子滤波应用于非高斯模型目标跟踪系统]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/109000755</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/109000755</guid><author>john_xia</author><pubDate>Sat, 10 Oct 2020 17:08:10 +0800</pubDate><description><![CDATA[将粒子滤波应用于非高斯模型目标跟踪系统
% 粒子滤波应用于非高斯模型目标跟踪系统
clc
clear
close all

%% 初始化相关参数
% 采样点数
M = 100;
% 采样间隔
T = 1;
% 粒子数
N = 100;
% 蒙特卡洛仿真次数
number = 10;
% 目标运动初始状态
x0 = 50000;
y0 = 50000;
vx = 300;
vy = -100;
% 过程噪声标准差
delta_w = 0.1;
% 闪烁噪声下观测距离标准差
delta_r = 50;
% 热噪]]></description><category></category></item><item><title><![CDATA[使用matlab将粒子滤波应用于高斯模型目标跟踪系统]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/109000612</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/109000612</guid><author>john_xia</author><pubDate>Sat, 10 Oct 2020 17:03:14 +0800</pubDate><description><![CDATA[将粒子滤波应用于高斯模型目标跟踪系统
% 粒子滤波应用于高斯模型目标跟踪系统
clc
clear
close all

randn('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;
]]></description><category></category></item><item><title><![CDATA[使用matlab对输入数据进行卡尔曼滤波]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/107816894</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/107816894</guid><author>john_xia</author><pubDate>Wed, 05 Aug 2020 15:42:51 +0800</pubDate><description><![CDATA[使用matlab对输入数据进行卡尔曼滤波。
简单说明一下程序中的数据。假设一辆汽车从初始点（0，10）开始行驶，初始速度沿y轴正方向10m/s。然后在观测途中向右先加速再减速变换车道。
整个过程其实有x轴坐标，y轴坐标，x轴速度，y轴速度以及x轴的加速度这5个物理量。但在卡尔曼滤波时我只用了x轴坐标，y轴坐标，x轴速度，y轴速度这4个量，相当于将x轴的人为施加的加速度当作了噪声处理。人为施加的加速度当然不符合高斯分布，有违卡尔曼滤波的假设，这里只是为现实应用直接处理的。有兴趣的可以把x轴的加速度这个量也纳入]]></description><category></category></item><item><title><![CDATA[使用matlab进行DBscan聚类]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/107662116</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/107662116</guid><author>john_xia</author><pubDate>Wed, 29 Jul 2020 13:39:25 +0800</pubDate><description><![CDATA[使用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]]></description><category></category></item><item><title><![CDATA[使用matlab进行K-means聚类]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/107662072</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/107662072</guid><author>john_xia</author><pubDate>Wed, 29 Jul 2020 13:36:37 +0800</pubDate><description><![CDATA[使用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]]></description><category></category></item><item><title><![CDATA[使用matlab建立Kd-tree并进行k-NN查询]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/107563005</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/107563005</guid><author>john_xia</author><pubDate>Fri, 24 Jul 2020 15:57:29 +0800</pubDate><description><![CDATA[使用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)]]></description><category></category></item><item><title><![CDATA[使用matlab进行RANSAC直线检测]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/107518675</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/107518675</guid><author>john_xia</author><pubDate>Wed, 22 Jul 2020 17:30:23 +0800</pubDate><description><![CDATA[在一堆随机点中隐藏一条直线，通过RANSAC方法检测出来。
clear
close all
clc

%% 生成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]]></description><category></category></item><item><title><![CDATA[使用matlab实现点云匹配（ICP算法）]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/107518340</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/107518340</guid><author>john_xia</author><pubDate>Wed, 22 Jul 2020 17:22:28 +0800</pubDate><description><![CDATA[代码主体和数据文件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;]]></description><category></category></item><item><title><![CDATA[【paper reading】Interpret Neural Networks by Identifying Critical Data Routing Paths]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/90598228</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/90598228</guid><author>john_xia</author><pubDate>Mon, 27 May 2019 14:20:21 +0800</pubDate><description><![CDATA[现在深度学习依靠大数据加上现在比较充足的计算能力，神经网络十分火热，也在很多方面有很好的应用。现在cvpr之类的顶级会议很多论文都是基于神经网络的研究。但现在有一个问题，就是神经网络究竟是怎么工作的，它运行的机理到底是什么样的，大家其实不是特别清楚。
对于深度学习模型的可解释性，也就是我们想要知道它内部的工作机理是什么样的，为什么会发生错误，什么情况下会发生错误，这方面的研究也是很受关注。包括美国的一些相关科研机构都把可解释性的机器学习作为深度学习下一代的比较有代表性的模型。]]></description><category></category></item><item><title><![CDATA[【paper reading】Uncalibrated Photometric Stereo under Natural Illumination]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/89875063</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/89875063</guid><author>john_xia</author><pubDate>Tue, 07 May 2019 10:08:17 +0800</pubDate><description><![CDATA[经典的photometric stereo方法对于实验设置主要有两个假设：1.已标定方向和亮度的平行光；2.朗伯表面的物体反射。近些年来，很多研究都致力于放宽这两方面的假设使ps方法能够更加适用于实际应用。其中对于光照的假设，几年前很多研究使用未标定或者半标定（只标定光源位置，不标定光源亮度）的点光源，现在的模型则更多的使用二阶球谐函数近似的自然光照模型从而应对更加接近现实世界的场景。同样，本文的方法主要是为了对第一种假设进行放宽，提出了一种对朗伯物体在未标定自然光下的表面恢复方法。]]></description><category></category></item><item><title><![CDATA[【paper reading】Self-calibrating Deep Photometric Stereo Networks]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/89182555</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/89182555</guid><author>john_xia</author><pubDate>Wed, 10 Apr 2019 19:49:06 +0800</pubDate><description><![CDATA[这篇论文中，作者提出了一种基于深度学习的uncalibrated photometric stereo方法。在photometric stereo领域中的一些传统方法由于场景复杂度的限制，通常会对物体表面的反射属性或者光源的分布进行各种假设。但是本方法致力于放宽这一限制，在未知的照明方向下对任意反射属性的物体进行表面恢复，同时标定出照明的方向和亮度。]]></description><category></category></item><item><title><![CDATA[【paper reading】Multiview Shape and Reflectance from Natural Illumination]]></title><link>https://blog.youkuaiyun.com/john_xia/article/details/88787243</link><guid>https://blog.youkuaiyun.com/john_xia/article/details/88787243</guid><author>john_xia</author><pubDate>Tue, 26 Mar 2019 14:58:26 +0800</pubDate><description><![CDATA[这篇文章是CVPR' 14上的，虽然有点老，但是它的做法很有借鉴性，对于基于光度信息进行重建方法怎么融合多个视角下的信息生成更加精确的法向量很有意思。通过RGB图像的光度反射信息恢复物体的表面一直是一个不断在研究的方向。本论文的方法中并不致力于提出精细的反射模型，而是将问题通过基于概率的几何估计方法进行解决。]]></description><category></category></item></channel></rss>