如果我使用char字符串作为针和chars的单元格数组作为haysack,那么以下每个时间会得到相同的结果吗?我正在看他们的文件,但我没有看到任何其他的暗示。我也想与SO的社区核实。
基本上,
k = strmatch('abc', cellArray, 'exact');
k2 = find(strcmp('abc', cellArray));
其中cellArray
是字符的Nx1单元格数组,并且在任意索引处具有“abc”值。例如,如果cellArray
在索引10,20和30处有abc
,那么对于任何cellArray
,每次 以下是真的吗?
k = [10 20 30];
k2 = [10 20 30];
此外,如果两种方法都返回相同的答案,那么在这种搜索方案中何时使用strmatch
而不是strcmp
(在相同数据类型的单元格数组中查找字符串)? strmatch
非常慢,如果有人想知道我为什么要问。
答案 0 :(得分:2)
不,结果会有所不同。函数strmatch
返回索引的向量,其中单元格数组(haystack)与字符串(needle)匹配:
>> arr = {'a', 'b', 'c', 'a', 'b'};
>> strmatch('a', arr, 'exact')
ans =
1
4
strcmp
函数返回一个逻辑向量,其中干草堆匹配的1
和不匹配的0
:
>> strcmp('a', arr)
ans =
1 0 0 1 0
另一方面,表达式find(strcmp('a', arr))
相当于strmatch('a', arr, 'exact')
。
答案 1 :(得分:2)
strmatch
。请改用strncmp
或validatestring
。 {alpha}将从未来版本的matlab中删除strmatch
。
* Matlab 2017 a
中的警告。