Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何找到一组最近的字符串?_String_Image_Matlab_Signals - Fatal编程技术网

String 如何找到一组最近的字符串?

String 如何找到一组最近的字符串?,string,image,matlab,signals,String,Image,Matlab,Signals,我有一个字符串和一个模式。如何在matlab中使用strfind并找到一组最接近的字符串?换句话说,strfind查找精确匹配,而我感兴趣的是查找一组最接近的字符串(例如10个最接近的字符串)您可以使用文件交换中的函数strdist,该函数计算两个字符串之间的Levenshtein距离 这里有一个方便的包装函数。您给它一个字符串str和一个字符串数组strarray(还可以选择返回多个字符串n),它给您一个包含最近的n字符串的单元格数组: function result = strfuzzy(s

我有一个字符串和一个模式。如何在matlab中使用strfind并找到一组最接近的字符串?换句话说,strfind查找精确匹配,而我感兴趣的是查找一组最接近的字符串(例如10个最接近的字符串)

您可以使用文件交换中的函数
strdist
,该函数计算两个字符串之间的Levenshtein距离

这里有一个方便的包装函数。您给它一个字符串
str
和一个字符串数组
strarray
(还可以选择返回多个字符串
n
),它给您一个包含最近的
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

接近哪个指标?我想你会发现有趣的。
>> strarray = {'cat', 'hey', 'hay', 'hat', 'Hey'};
>> strfuzzy('hey', strarray)
ans = 
    'hey'    'hay'    'Hey'    'hat'    'cat'
>> strfuzzy('bat', strarray, 3)
ans = 
    'cat'    'hat'    'hay'