0

二重行列とラベルのセル配列からデータセットを作成しようとしています。

mat2dataset 関数にアクセスできないので、似たようなものを書こうとしています。

>> whos data feature_labels
  Name                Size             Bytes  Class     Attributes
  data                2x208             3328  double              
  feature_labels      1x208            50776  cell   

実際の使用では、データは最大 200 万行になり、常に double 形式になります。列の数は 20 から 2000 までの範囲になるので、次のようにします。

>> D = dataset([],[],[],[],[],...[], 'VarNames', feature_labels); 

本当に実現不可能です。

助言がありますか?

編集:

現在、for ループと horzcat を使用して、各ループで新しいデータセット列を連結しています。データセットのサイズを事前に割り当てる方法がこのように見えないので、より大きなデータセットでパフォーマンスが向上すると思います..

4

1 に答える 1

1

構造体の使用を検討しましたか? 私はこれらを MATLAB でデータベース用に常に使用しています。それぞれ約 15 のフィールドを持つ最大 20,000 の要素に対して非常にうまく機能することを私は知っているので、2 つのフィールドを持つ 200 万のアイテムに対しても他のものと同じように機能すると思います。

あるいは、セル配列に入れることはできませんか?

DataBase{rowNum,1}=dataVector(rowNum,:);
DataBase{rowNum,2}=label{rowNum};

構造体またはセルを事前に割り当てるには、フィールドを初期化する最初のものを作成したら、構造体を使用すると比較的簡単です。Struct(2000000).fieldName =[]

セル配列を事前に割り当てるには、次のようにします

DataBase={[]}
DataBase{2000000,2}=[]

これにより、すべてが事前に割り当てられ、空の値が入力されます。

于 2013-06-05T14:20:42.993 に答える