2017-03-07 10 views
0

私はデータベースと対応するラベルファイルをmatlabの構造ファイルに保存しました。行列の中に構造体からの私のデータベース行列を読み出すために、私は、次のMATLABコマンドを使用しています:Matlabで行のインデックスを見つける

train_data_matrix = (cat(1, train_data.f2)); 
train_data構造体のサイズは終わりの大きさで、いくつかの空のサンプルがあるしかしので、883である

train_data_matrix833です。私の問題は、すべてのサンプルに対して注釈があることです。したがって、注釈のサイズは883x1です。注釈ベクトルからデータベース行列で空の行を削除するにはどうすればよいですか?

答えて

3

あなたは欠損値をチェックし、変数train_data.f2は、構造体の考えではありませんそれら

% Store data in a cell array (preserves missing values) 
tmp = {train_data.f2}; 

% Create a logical array that is TRUE where the missing values are 
toremove = cellfun(@isempty, tmp); 

% Convert to an array (removes missing values as you've mentioned) 
data = cat(1, tmp{:}); 

% Create an array of annotations (after removing the ones that are missing data) 
annotations = cat(1, train_data(~toremove).annotations); 
+0

を削除するisemptyを使用することができます。 cellfunを使わずに削除するためにインデックスに点を付けることはできますか? –

+0

@JoseRamon 'tmp'はセル配列ですが(各要素は' struct'の 'f2'値を含んでいます)、なぜ' cellun'を使うのですか?エラーが発生していますか? – Suever

+0

超感謝、それは魅力のように動作します! –

関連する問題