我在从Matlab编写双重对象时遇到问题。
我有一个名为F
的结构,其中有两个对象:F.data
是大小为190*100000
的双精度对象,而F.labels
是大小为{ {1}}。我想要做的是将标签添加到double对象,并将其写入csv文件中。我正在使用190*1
进行导出,并且我在MATLAB中是新手,所以我宁愿提供一个简单的解决方案,但这不是强制性的。
我还尝试使用csvwrite()
和vertcat
以便稍后将其粘贴到我的double对象中,但是失败了。
非常感谢您。
答案 0 :(得分:0)
csvwrite
及其更强大的相对符号dlmwrite
将仅将数字矩阵写入文件-它们不适用于混合的数字和文本数据。
我认为,保存混合数据的最佳方法是使用table:
% Generate example numeric data
F.data = rand(190, 100000);
% Generate example row labels
F.labels = arrayfun(@(x) sprintf('Row%d', x), 1:size(F.data, 1), 'UniformOutput', false).';
% Put the data in a table
T = array2table(F.data, 'RowNames', F.labels);
% Write the table to a csv file, including row labels but not column labels
writetable(T, 'myoutput.csv', 'WriteRowNames', true, 'WriteVariableNames', false)
请注意:
要执行此操作,您将需要足够的可用内存来将整个数组复制到表结构中,该结构比原始数组需要更多的空间。如果这是一个问题,您将不得不考虑遍历数据和标签数组,并使用low-level file I/O functions来一次格式化和写入一行。