MATLAB:strmatch vs strcmp

时间:2013-04-02 21:41:03

标签: matlab

如果我使用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非常慢,如果有人想知道我为什么要问。

2 个答案:

答案 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。请改用strncmpvalidatestring。 {alpha}将从未来版本的matlab中删除strmatch。 * Matlab 2017 a中的警告。