DTW高效算法中在计算匹配距离时,把实际的动态弯折分为三段(1,Xa),(Xa+1,Xb)和(Xb+1,N)看不懂啊,请高手指教啊(在线等,谢谢大家啊)

jihuichengben 2012-06-15 11:59:51
DTW的高效算法
由于匹配过程中限定了弯折的斜率,因此许多格点实际上是到达不了的,如图3-1所示。因此菱形之外的格点对应的帧匹配距离是不需要计算的。另外也没有必要、保存所有的帧匹配距离距阵和累积距阵,因为每一列各格点上的匹配计算只用到了前一列的三个网格。充分利用这两个特点可以减少计算量和储存空间的需要。
把实际的动态弯折分为三段,(1,Xa),(Xa+1,Xb)和(Xb+1,N),其中:
Xa和Xb都取相近的整数。由此也得出对M和N长度的限制条件:
当不满足以上条件时,认为两者差别实在太大,无法进行动态弯折匹配。
在X轴上的每一帧不再需要与Y轴上的每一帧进行比较,而只是与Y轴上[y ,y ]间的帧进行比较,y 和y 的计算如下式:
也可能会出现Xa>Xb的情况,此时弯折匹配的三段为(1,Xb),(Xb+1,Xa)和(Xa+1,N)。
对于X轴上每前进一帧,虽然所要比较Y轴上的帧数不同,但弯折特性是一样的,累积距离的更新都是用下式实现的:
由于X轴上每前进一帧,只需要用到前一列的累积距离距阵。每前进一帧都进行更新,即按上式利用前一列的累积距离D和当前列的所有帧匹配的距离d(x,y),求出当前帧的累积距离,保存于矢量d中,再把更新的距离d赋值给D,作为新的累积距离,供下一列使用。这样一直前进到X轴上最后一列,矢量D的第M个元素即为两个模板动态弯折的匹配距离。
...全文
277 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jihuichengben 2012-06-15
  • 打赏
  • 举报
回复
源代码
function dist = dtw(test, ref)
global x y_min y_max
global t r
global D d
global m n

t = test;
r = ref;
n = size(t,1);%返回的时矩阵t的行数
m = size(r,1);%返回的时矩阵r的行数

d = zeros(m,1);%产生一个的m*1的全0矩阵
D = ones(m,1) * realmax;%realmax系统所能表示的最大数
D(1) = 0;

% 如果两个模板长度相差过多,匹配失败
if (2*m-n<3) | (2*n-m<2)
dist = realmax;
return
end

% 计算匹配区域
xa = round((2*m-n)/3);%round四舍五入取整
xb = round((2*n-m)*2/3);

if xb>xa
%xb>xa, 按下面三个区域匹配
% 1 :xa
% xa+1:xb
% xb+1:N
for x = 1:xa
y_max = 2*x;
y_min = round(0.5*x);
warp%由warp函数的纹理成图功能实现平面图像在空间三维曲面上的显示
end
for x = (xa+1):xb
y_max = round(0.5*(x-n)+m);
y_min = round(0.5*x);
warp
end
for x = (xb+1):n
y_max = round(0.5*(x-n)+m);
y_min = round(2*(x-n)+m);
warp
end
elseif xa>xb
%xa>xb, 按下面三个区域匹配
% 0 :xb
% xb+1:xa
% xa+1:N
for x = 1:xb
y_max = 2*x;
y_min = round(0.5*x);
warp
end
for x = (xb+1):xa
y_max = 2*x;
y_min = round(2*(x-n)+m);
warp
end
for x = (xa+1):n
y_max = round(0.5*(x-n)+m);
y_min = round(2*(x-n)+m);
warp
end
elseif xa==xb
%xa=xb, 按下面两个区域匹配
% 0 :xa
% xa+1:N
for x = 1:xa
y_max = 2*x;
y_min = round(0.5*x);
warp
end
for x = (xa+1):n
y_max = round(0.5*(x-n)+m);
y_min = round(2*(x-n)+m);
warp
end
end

%返回匹配分数
dist = D(m);

function warp
global x y_min y_max
global t r
global D d
global m n

d = D;
for y = y_min:y_max
D1 = D(y);
if y>1
D2 = D(y-1);
else
D2 = realmax;
end
if y>2
D3 = D(y-2);
else
D3 = realmax;
end
d(y) = sum((t(x,:)-r(y,:)).^2) + min([D1,D2,D3]);
end

D = d;
不会又不见了吧
jihuichengben 2012-06-15
  • 打赏
  • 举报
回复

function dist = dtw(test, ref)
global x y_min y_max
global t r
global D d
global m n

t = test;
r = ref;
n = size(t,1);%返回的时矩阵t的行数
m = size(r,1);%返回的时矩阵r的行数

d = zeros(m,1);%产生一个的m*1的全0矩阵
D = ones(m,1) * realmax;%realmax系统所能表示的最大数
D(1) = 0;

% 如果两个模板长度相差过多,匹配失败
if (2*m-n<3) | (2*n-m<2)
dist = realmax;
return
end

% 计算匹配区域
xa = round((2*m-n)/3);%round四舍五入取整
xb = round((2*n-m)*2/3);

if xb>xa
%xb>xa, 按下面三个区域匹配
% 1 :xa
% xa+1:xb
% xb+1:N
for x = 1:xa
y_max = 2*x;
y_min = round(0.5*x);
warp%由warp函数的纹理成图功能实现平面图像在空间三维曲面上的显示
end
for x = (xa+1):xb
y_max = round(0.5*(x-n)+m);
y_min = round(0.5*x);
warp
end
for x = (xb+1):n
y_max = round(0.5*(x-n)+m);
y_min = round(2*(x-n)+m);
warp
end
elseif xa>xb
%xa>xb, 按下面三个区域匹配
% 0 :xb
% xb+1:xa
% xa+1:N
for x = 1:xb
y_max = 2*x;
y_min = round(0.5*x);
warp
end
for x = (xb+1):xa
y_max = 2*x;
y_min = round(2*(x-n)+m);
warp
end
for x = (xa+1):n
y_max = round(0.5*(x-n)+m);
y_min = round(2*(x-n)+m);
warp
end
elseif xa==xb
%xa=xb, 按下面两个区域匹配
% 0 :xa
% xa+1:N
for x = 1:xa
y_max = 2*x;
y_min = round(0.5*x);
warp
end
for x = (xa+1):n
y_max = round(0.5*(x-n)+m);
y_min = round(2*(x-n)+m);
warp
end
end

%返回匹配分数
dist = D(m);

function warp
global x y_min y_max
global t r
global D d
global m n

d = D;
for y = y_min:y_max
D1 = D(y);
if y>1
D2 = D(y-1);
else
D2 = realmax;
end
if y>2
D3 = D(y-2);
else
D3 = realmax;
end
d(y) = sum((t(x,:)-r(y,:)).^2) + min([D1,D2,D3]);
end

D = d;
内容概要:本文围绕城市场景下的无人机三维路径规划问题,提出了一种新颖的多目标粒子群优化算法(NMOPSO),旨在解决高维复杂环境路径规划面临的多重挑战。研究聚焦于导航变量的多目标优化,构建了一个包含路径长度、飞行安全性、能量消耗等多个相互冲突目标的优化模型,并采用改进的粒子群算法进行高效搜索,最终获得一组Pareto最优解集,为实际决策提供多样化路径选择方案。该方法结合Matlab代码实现,详细阐述了算法的设计机制、数学建模流程及仿真验证过程,充分展示了其在密集城市建筑环境有效规避障碍物、满足飞行动力学约束并实现多目标权衡的能力,具有较强的工程应用价值。; 适合人群:具备一定优化算法理论基础和Matlab编程能力,从事无人机路径规划、智能交通系统、自动化控制、人工智能应用等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于城市环境的无人机物流配送、巡检监控、应急救援等实际任务的三维路径规划;②为高维、非线性、多约束的多目标优化问题提供有效的算法设计思路与改进参考;③通过Matlab仿真平台复现算法,进一步开展性能测试、参数调优与算法对比研究,推动相关领域的技术创新。; 阅读建议:此资源强调算法原理与工程实践的深度融合,建议读者重点研读目标函数的构建方式、约束条件的处理策略以及NMOPSO算法的核心改进机制,并务必动手运行和调试所提供的Matlab代码,以深入理解算法在三维空间路径优化的具体实现细节与实际表现。

3,425

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧