4

文字列を針として使用し、文字のセル配列を干し草の袋として使用している場合、次は毎回同じ結果を達成しますか? 私は彼らのドキュメントを見ていますが、それ以外のことを示唆するものは何も見当たりません。SOのコミュニティにも確認したかったのです。

基本的、

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

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

ここcellArrayで、 は文字の Nx1 セル配列で、任意のインデックスに 'abc' 値があります。たとえば、インデックス 10、20、および 30cellArrayある場合。abccellArray

k = [10 20 30];

k2 = [10 20 30];

また、両方のメソッドが同じ回答を返す場合、この種の検索シナリオ (同じデータ型のセル配列で char 文字列を検索する) でいつstrmatchoverを使用しますか? なぜ私が尋ねているのか疑問に思っている人がいれば、非常に遅いです。strcmpstrmatch

4

2 に答える 2

3

いいえ、結果は異なります。この関数は、セル配列 (haystack) が文字列 (needle) と一致するインデックスstrmatchのベクトルを返します。

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

このstrcmp関数は論理ベクトルを返します1。干し草の山が一致する場所は s で、一致0しない場所は s です。

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

一方、式find(strcmp('a', arr))は と同等strmatch('a', arr, 'exact')です。

于 2013-04-02T21:54:40.937 に答える