毕业论文B.3 DTW算法

本文介绍了DTW算法的实现原理及代码实现过程,并通过图形化方式解释了如何在相异度图像中寻找最优路径来计算两个语音MFCC特征之间的距离。

dtw算法的代码:

function dist = dtw(t,r)
n = size(t,1);
m = size(r,1);

% 帧匹配距离矩阵
d = zeros(n,m);

for i = 1:n
for j = 1:m
    d(i,j) = sum((t(i,:)-r(j,:)).^2);
end
end

% 累积距离矩阵
D =  ones(n,m) * realmax;
D(1,1) = d(1,1);

% 动态规划
for i = 2:n
for j = 1:m
    D1 = D(i-1,j);

    if j>1
        D2 = D(i-1,j-1);
    else
        D2 = realmax;
    end

    if j>2
        D3 = D(i-1,j-2);
    else
        D3 = realmax;
    end

    D(i,j) = d(i,j) + min([D1,D2,D3]);
end
end

dist = D(n,m);

输入B.3随笔中计算得到的两个语音mfcc特征系数。

为DTW算法代码中设置断点。断点处画图d矩阵的图像:

从这个相异度图像中可以看出dtw算法就是要在这个图像中找到一条从(0,0)点到(86,67)点一条折线,统计这条线上的值,累计和为其它任意折线累计和的最小值。也就是说要找图像中最谷底的连线。

该连线找到后,累计计算线上每个值的和。这个值就为dtw算法所最终求出的相异度。

改进dtw算法:如果在计算相异度之前,对相异度图像进行加权处理,在求相异度,观察结果。

转载于:https://www.cnblogs.com/cheetahw/archive/2012/05/29/2523599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值