我试图从双矩阵和标签的单元格数组创建数据集。
我无法访问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在每个循环上连接新的数据集列。我没有看到以这种方式预先分配数据集大小的方法,所以我想虽然性能会随着更大的数据集而突然显现..
答案 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}=[]
这会预先分配所有内容并使用空值填充它。