在Matlab中从矩阵创建数据集

时间:2013-06-05 12:23:25

标签: matlab dataset type-conversion

我试图从双矩阵和标签的单元格数组创建数据集。

我无法访问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在每个循环上连接新的数据集列。我没有看到以这种方式预先分配数据集大小的方法,所以我想虽然性能会随着更大的数据集而突然显现..

1 个答案:

答案 0 :(得分:1)

你考虑过使用结构吗?我一直在MATLAB中使用这些来处理数据库事务。我知道它对于多达20,000个元素非常有效,每个元素大约有15个字段,所以我认为它仍然可以用于200个具有2个字段的项目。

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

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

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

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

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

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