合并不同大小的csv文件

时间:2018-06-04 21:53:00

标签: matlab export-to-csv cell-array

我试图将数据分析+导入到Excel中更加容易。 我有3种不同的数据类型,称为data1,data2,data3。 我将它们存储在一个单元格数组measurements = cell(3,99)中 " 3"代表3种不同类型的数据,每个数字1-99代表我测量过的一个对象。

我试图将每种类型的所有文件合并在一起,因此我有1个Excel文件用于data1,1个文件用于data2,1个用于data3。

data1和data2是行向量,而data3是2D矩阵。每个条目可以是不同的大小(虽然没有任何意义上的大)。

我目前的尝试:

for ii=1:99
      data1File = sprintf('data1_%d.csv',ii);
      data2File = sprintf('data2_%d.csv',ii);
      data3File = sprintf('data3_%d.csv',ii);
      csvwrite(data1File, measurements{1,ii});
      csvwrite(data2File, measurements{2,ii});
      csvwrite(data3File, measurements{3,ii});
  end 

这只给了我99个csv文件的每种数据类型,这是非常低效的。我尝试了许多不同的方法来合并它们(例如,dlmwrite)但是没有成功。

也尝试过:

cell2csv('data1.csv',measurements(1,:), ',','2018','.');

奇怪的是,尽管data2也表示为行向量,但这仅适用于data1。但是,data1包含更大的数字(通常接近5.1 * 10 ^ 4),所以我认为小数点可能已经改变了。 我整天都在尝试这个问题而没有运气。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试将“{”更改为“(”在此段代码中?并删除for循环。

csvwrite(data1File, measurements{1,ii}); %change this to this
csvwrite(data1File, measurements(1,:)); %and get it out of the for loop

然后它将测量结果视为1个数组而不是99个不同的单个输出。

您的data1File会创建99个不同命名的文件,因此您当然会拥有99个不同的文件。

*编辑,这是针对dlmwrite:
此外,当尝试将某些内容附加到文件时,您需要使用'-append'添加。

csvwrite(data1File, measurements(1,:),'-append'); %like so

如果这不能解决,我建议查看文件交换,这是我找到的Cell2csv

相关问题