使用Matlab将DAT文件转换为CSV格式

时间:2013-06-15 00:23:20

标签: matlab csv fopen textscan

我有以下文本文件THERM2.DAT,它具有唯一的格式:

Ag+               g10/97AG 1.E -1.   0.   0.G   298.150  6000.000 1000.        1
 9.72687035E+00-4.01472180E-03 7.47796464E-07-1.76595533E-11-4.14279861E-15    2
 1.17714726E+05-3.91847888E+01 1.67072904E-01 2.30034783E-02-8.05675031E-05    3
 1.14647031E-07-5.08119362E-11 1.22365909E+05 1.49717871E+01 1.22928919E+05    4
Ag-               g10/97AG 1.E  1.   0.   0.G   298.150  6000.000 1000.        1
 2.50067694E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
 1.76654697E+04 5.86586664E+00 2.50067694E+00 0.00000000E+00 0.00000000E+00    3
 0.00000000E+00 0.00000000E+00 1.76654697E+04 5.86586664E+00 1.84110465E+04    4
AIR               L 9/95  WARNING!         0G   200.000  6000.000 1000.        1
 3.08792717E+00 1.24597184E-03-4.23718945E-07 6.74774789E-11-3.97076972E-15    2
-9.95262755E+02 5.95960930E+00 3.56839620E+00-6.78729429E-04 1.55371476E-06    3
-3.29937060E-12-4.66395387E-13-1.06234659E+03 3.71582965E+00-1.50965000E+01    4

这只是文件的一部分,有数百行,每组4行对应一个特定的物种。

我的目标是将所有这些数据转换为更通用的内容,例如CSV文件,以便Excel,Matlab等各种程序可以轻松读取。以下内容会很好:

Ag+,298,6000,1000,9.72687035E+00,-4.01472180E-03,7.47796464E-07,etc...
Air,200,6000,1000,3.08792717E+00,1.24597184E-03,-4.23718945E-07,etc...

由于我有Matlab,我想知道是否可以使用它将数据导出到CSV文件。到目前为止,我有以下Matlab脚本:

fid = fopen('THERM2.DAT');
data = textscan(fid,'%s');

使用textscan将所有数据放入单元格数组中,但我不知道如何从数组中获取数据并将其写入CSV格式的文本。

1 个答案:

答案 0 :(得分:0)

我检查了帮助文档,这是一个例子,也许它很有用

以下字符串包含换页符\ f:

**lyric = sprintf('Blackbird\fsinging\fin\fthe\fdead\fof\fnight');**

要使用textscan读取字符串,请调用sprintf函数以显式转换换页符:

 **C = textscan(lyric, '%s', 'delimiter', sprintf('\f'));**

textscan返回一个1乘1的单元格数组C:

C {1} =     {'黑鸟'; '唱歌'; '在'; “的”; '死'; '的'; '夜间'}