指定された文字列の細胞(セル)のインデックスを見つけるために、様々な方法を使用してMatlabの####自然の分析とは、制限や落とし穴を分析しました

内部の一般的な3通りの方法で使用されるセルの文字列を検索します。

この方法の一つ

>> C = {1,5,3,4,2,3,4,5,2,1}; 
index = find([C{:}] == 5)

index =

     2     8

まず、方法[C {:}]で配列への細胞内の要素、操作、次いでアレイ行う見つける()関数は、文字列を検索するためにインデックスを返します。

  • 利点

そして、検索セル内の単一の文字で同時に数値データ型

  • 制限

この方法は、のみ(小数を含む)の数又は単一文字(単一文字)有効。
複数の文字のアクション次のエラーの場合:

>> c={'1' '5d' '3' '4' '2' '3' '4' '5' '2' '1'};
>> index = find([c{:}] == '5d')
错误使用  == 
矩阵维度必须一致。
  • 理由(トラップ)エラーの詳細な分析

次のエラーが発生する理由は、キーは[]の操作です
レッツは、異なるタイプのデータの操作の違い[]を見てみましょう

  1. 複数の数値型、本質的にすべての変数の[]動作である変数、アレイへのシステムにおいては、数値配列を返します。
>> C = {1,5,3,4,2,3,4,5,2,1}; 
[C{:}]

ans =

     1     5     3     4     2     3     4     5     2     1
  1. 複数の文字操作の[]を実行する変数は、本質的に実行される文字列の連結を、それが返さchar配列、文字格納各アレイ素子1の長さを
>> c={'1' '5d' '3' '4' '2' '3' '4' '5' '2' '1'};
[c{:}],class([c{:}])

ans =

15d34234521


ans =

char

右長文([C {}] ==「:加えて、研究は見つけ、見つかった 5D」) の単位長さ当たりのアレイに残さなければならない
問題文の先頭に戻るので、検索([C {:}] = =「5D」) 等号の左辺は、n-1 *文字配列、* 2の右側に文字の配列であり、2が最小ユニット1の左側の右側の長さと等しくない場合、エラー:==寸法を使用して誤差行列は、一貫していなければなりません。

方法二

>> c={'1' '5d' '3' '4' '2' '3' '4' '5' '2' '1'};
index = find(strcmp(c,'5d'))

index =

     2
  • 利点

同時に検索することができるのstrcmp()メソッド文字文字列を

  • 制限

strcmp()メソッドは、数値取得することはできませんデータを。

>> c={1,'5',3,4,2,3,4,5,2,1};index = find(strcmp(c,5))

index =

   空矩阵: 1×0

メソッドスリー

>> c={'1' '5d' '3' '4' '2' '3' '4' '5' '2' '1'};
>index = find(ismember(c,'5d'))

index =

     2
  • 利点

あなたは取得することができ、文字列単一の文字を

  • 制限

取得できない数値データ型を、
含めることはできません混在データ型のセルを(または数値と文字列が含まれています)検索されます。
遅く

>>  c={1,'5d','5',4,2,3,4,5,2,1};
idx = find(ismember(c,'5'))
错误使用 cell/ismember (line 34)
类 cell 的输入 A 和类 char 的输入 B 必须为字符串元胞数组,除非其中某个输入为字符串。

概要

テーブルによって三つの方法の適用範囲をまとめます

方法 データセルを取得するとの混合物が含まれています 数値を取得 単一の文字を取得 文字列を取得
この方法の一つ ×
方法二 ×
メソッドスリー × ×
公開された59元の記事 ウォンの賞賛2 ビュー4636

おすすめ

転載: blog.csdn.net/lch551218/article/details/103805042