3
문자열과 패턴이 있습니다. matlab에서 strfind를 사용하여 가장 가까운 문자열을 찾는 방법은 무엇입니까? 즉 strfind는 가장 가까운 문자열 (예 : 10 개의 가장 가까운 문자열)을 찾는 데 관심이있는 동안 정확한 일치를 찾습니다.가장 가까운 문자열을 찾는 방법은 무엇입니까?
문자열과 패턴이 있습니다. matlab에서 strfind를 사용하여 가장 가까운 문자열을 찾는 방법은 무엇입니까? 즉 strfind는 가장 가까운 문자열 (예 : 10 개의 가장 가까운 문자열)을 찾는 데 관심이있는 동안 정확한 일치를 찾습니다.가장 가까운 문자열을 찾는 방법은 무엇입니까?
this 함수 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'
메트릭을 닫으시겠습니까? – Acorbe
[this] (http://www.mathworks.com/matlabcentral/answers/18932)가 재미있을 것입니다. –