2017-01-31 6 views
0

MATLABにテーブルがあり、そのデータ型はセル文字列とセルが混在しています。 テーブル列の1つが「ラテラリティ」で、データがセル文字列です。私が側性= 'L'テーブルからデータを選択する方法int MATLAB

と、すべてのデータを選択したい

は、だから私は実行します。ドキュメントごとなど

newTable = (table.Laterality == 'L') 

を:https://uk.mathworks.com/help/matlab/tables.html

ただし、これはエラーを与える:

Undefined function 'eq' for input arguments of type 'cell'. 

データ型をcharに変更しようとしました。私はテーブルの代わりにデータセット型を使用しようとしました。その他の提案はありますか?

eq_L = cellfun(@(lat) strcmp(lat, 'L'), your_table.Laterality); 
       % each cell content (named lat) is compared(*) with 'L' 

又は@excazaによって想起されるように、strcmp()が処理できるセルアレイ:cellfun機能付き

答えて

1

そして

eq_L = strcmp(your_table.Laterality, 'L'); 

newTable = your_table(eq_L,:); % logical indexing 

eq_Lは、同じサイズの配列でありますに使用される論理値。

(*)すべてのセルが1文字のみの場合は、lat == 'L'と書くことができます。しかし、1文字以上(空の場合)の場合は、異なるサイズの配列を比較する際にエラーが発生します。 strcmp()は両方のケースを処理できます。

+0

大変ありがとうございます! 参照のためだけに、新しいテーブルのすべてのデータを取得する最後の行として 'newTable = your_table(eq_L、:);'を実行する必要がありました。 –

+0

@saulgold編集しました。 –

+0

'strcmp'はセル配列上でネイティブで動作しますので、' cellfun'を使用して操作を遅くする必要はありません。 – excaza

関連する問題