4

如果我使用 char 字符串作为针,使用 char 元胞数组作为 haysack,以下每次都会达到相同的结果吗?我正在查看他们的文档,但我没有看到任何其他建议。我也想咨询 SO 的社区。

基本上,

k = strmatch('abc', cellArray, 'exact');

k2 = find(strcmp('abc', cellArray));

其中cellArray是一个 Nx1 字符元胞数组,它在任意索引处具有“abc”值。例如,如果在索引 10、20 和 30 处具有。那么对于 any 来说,以下情况cellArray每次都成立吗?abccellArray

k = [10 20 30];

k2 = [10 20 30];

此外,如果两种方法都返回相同的答案,那么您何时会在这种搜索场景中使用strmatchover (在相同数据类型的元胞数组中查找 char 字符串)?非常慢,如果有人想知道我为什么要问的话。strcmpstrmatch

4

2 回答 2

3

不,结果会有所不同。该函数strmatch返回一个索引向量,其中元胞数组 (haystack) 与字符串 (needle) 匹配:

>> arr = {'a', 'b', 'c', 'a', 'b'};
>> strmatch('a', arr, 'exact')
ans =
    1
    4

strcmp函数返回一个逻辑向量,其中1s 与 haystack 匹配,而 s 与0s 不匹配:

>> strcmp('a', arr)
ans =
    1   0   0   1   0

另一方面,表达式find(strcmp('a', arr))等价于strmatch('a', arr, 'exact')

于 2013-04-02T21:54:40.937 回答
2

strmatch不推荐。使用strncmpvalidatestring代替。strmatch将从未来版本的 matlab 中删除。* 中给出的警告Matlab 2017 a

于 2018-04-04T00:49:38.480 回答