我有一个字符串和一个模式。我如何在matlab中使用strfind并找到一堆最接近的字符串?换句话说,strfind找到完全匹配,而我有兴趣找到一堆最接近的字符串(例如10个最接近的字符串)
答案 0 :(得分:1)
您可以使用文件交换中的this函数strdist
来计算两个字符串之间的Levenshtein距离。
这是一个方便的包装函数。你给它一个字符串str
和一个字符串数组strarray
(以及可选的多个字符串返回n
),它给你一个包含最接近的{{1}的字符串数组} strings:
n
以下是如何使用它:
function result = strfuzzy(str,strarray,n)
#STRFUZZY
#
# Inputs
# str String
# strarray Cell array of strings
# n Integer, 1 <= n <= length(strarray)
#
# Outputs
# result Cell array of length n containing the closest matches to str
#
if nargin < 2, error('Requires at least two arguments'), end
if nargin < 3, n = length(strarray); end
A = cellfun( @(x) strdist(str,x), strarray );
[tmp,idx] = sort(A);
result = strarray(idx);
result = result(1:n);
end