0

我正在尝试从双矩阵和标签单元格数组创建数据集。

我无权访问 mat2dataset 函数,所以我正在尝试编写类似的东西。

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

在实际使用中,数据将有大约 200 万行,并且总是双格式。列数从 20 到 2000 不等,因此可以执行以下操作;

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

真的不可行。

有什么建议么?

编辑:

当前使用 for 循环和 horzcat 在每个循环上连接新的数据集列。我没有看到一种预先分配数据集大小的方法,所以我想性能会随着更大的数据集而突飞猛进..

4

1 回答 1

1

您是否考虑过使用结构?我一直在 MATLAB 中将这些用于数据库。我知道它对于多达 20,000 个元素(每个元素大约有 15 个字段)非常有效,所以我认为它对于 200 万个带有 2 个字段的项目仍然可以正常工作。

或者,你不能把它放在一个单元格数组中吗?

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

要预先分配一个结构或单元格,它相对容易,使用结构,一旦你第一个初始化字段,只需说Struct(2000000).fieldName =[]

要预先分配您的单元格数组,只需执行

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

这会预先分配所有这些并用空值填充它。

于 2013-06-05T14:20:42.993 回答