Matlab最佳匹配矩阵内的序列

时间:2013-12-14 18:28:11

标签: algorithm matlab edit distance levenshtein-distance

我想在NxN矩阵中找到整数序列的最佳匹配。问题是我不知道如何提取这个最佳匹配的位置。我有以下代码应该计算编辑距离,但我想知道我的网格中编辑距离最短的位置!

function res = searchWordDistance(word,grid)

% wordsize = length(word); % extract the actual size
% [x ,y] = find(word(1) == grid);
D(1,1,1)=0;
for i=2:length(word)+1
    D(i,1,1) = D(i-1,1,1)+1;
end
for j=2:length(grid)
    D(1,1,j) = D(1,1,j-1)+1;
    D(1,j,1) = D(1,j-1,1)+1;
end
% inspect the grid for best match
for i=2:length(word)
    for j=2:length(grid)
        for z=2:length(grid)
        if(word(i-1)==grid(j-1,z-1))
            d = 0;
        else
            d=1;
        end
        c1=D(i-1,j-1,z-1)+d;
        c2=D(i-1,j,z)+1;
        c3=D(i,j-1,z-1)+1;
        D(i,j,z) = min([c1 c2 c3]);

        end
    end
end

我已经使用这段代码(少了一个维度)来比较两个字符串。 编辑使用5x5矩阵作为示例

15 17 19 20 22
14 8  1  15 24
11 4  17 3  2
14 2  1  14 8
19 23 5  1  22

现在如果我有序列[4,1,1][15,14,12,14],则应使用该算法找到它们。第一个是完美匹配(对角线从(3,2)开始)。第二列是第一列,是该序列最接近的匹配,因为只有一个数字是错误的。

0 个答案:

没有答案