全部,
我有一个包含5个单元格的单元格数组,如下所示:
<18250x1 int32> <18250x1 int32> <18250x1 int32> <18250x1 double> <18250x1 double>
每个单元格中有18250行和1列。
现在,我想将这些数据写入具有18250行,5列的csv文件中。
我尝试了Cell2mat,它只允许数组具有相同的数据类型。我需要在输出中保持int或double的数据类型。有人知道如何解决这个问题吗?
谢谢,詹姆斯。
由于每个单元格具有不同的数据类型,因此这将有些复杂。我认为尊重数据类型的唯一方法是,通过打开一个要写入的文件来手动创建自己的CSV文件,然后将您的条目一次一次地手动写入CSV文件。请记住,CSV文件是用逗号分隔的,所以数字用逗号分隔,并且每一行都用回车符分隔。
基本上,您将遍历特定单元格的每一行,然后通过尊重数据类型并在每个值之间放入逗号并手动为数据的每一行放置回车符来按原样写入数据。假设您的数据存储在名为的单元格数组中M
,则可以执行以下操作:
fid = fopen('test.csv', 'w');
for idx = 1 : 18250
val1 = M{1}(idx);
val2 = M{2}(idx);
val3 = M{3}(idx);
val4 = M{4}(idx);
val5 = M{5}(idx);
fprintf(fid, '%d,%d,%d,%f,%f\n', val1, val2, val3, val4, val5);
end
fclose(fid);
上面的代码打开了一个test.csv
使用写入的文件fopen
。这将返回指向我们要写入的文件的链接。然后,我们遍历每个单元格数组中的每个对应元素,然后将其手动写为文件中的一行。每个数字都以逗号分隔,并通过尊重每个数字的数据类型在CSV文件中组成一行。完成后,我们将手动放置回车符并转到下一行直到完成。然后,我们关闭文件以表示我们已停止写入文件,并且可以应用更改。
尝试一下,看看是否可行!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句