我在*.txt
中有一个原始数据文件,我想用Matlab读取并使用适当的标题转换为excel。
原始数据
0.050265,202241546530,50397417,0-127,128-255,1300812
0.051295,202245273937,65971821,0-127,128-255,1300812
0.050893,202248987612,65466246,0-127,128-255,1300812
0.050906,202252718742,65606097,0-127,128-255,1295785
0.050924,202256444380,65667670,0-127,128-255,1295785
对于上述数据,csvread()
有效但将数据放在多行中,如下所示:
0.0502650000000000 202241546530.000 50397417 0 -127 128
-255 1300812 0 0 0 0
0.0512950000000000 202245273937.000 65971821 0 -127 128
-255 1300812 0 0 0 0
0.0508930000000000 202248987612.000 65466246 0 -127 128
-255 1300812 0 0 0 0
0.0509060000000000 202252718742.000 65606097 0 -127 128
-255 1295785 0 0 0 0
0.0509240000000000 202256444380.000 65667670 0 -127 128
-255 1295785 0 0 0 0
导入后所需的数据格式
C1 C2 C3 C4 C5 C6
0.0502650000000000 202241546530.000 50397417 0-127 128-255 1300812
0.0512950000000000 202245273937.000 65971821 0-127 128-255 1300812
0.0508930000000000 202248987612.000 65466246 0-127 128-255 1300812
0.0509060000000000 202252718742.000 65606097 0-127 128-255 1295785
0.0509240000000000 202256444380.000 65667670 0-127 128-255 1295785
我可以处理如何添加特定标题,但数据会分成多行,我认为由于特殊字符-
。
任何人都可以建议更好的方法将这些数据逐行读入Matlab吗? 感谢。
答案 0 :(得分:3)
这对我有用
clear
% Names of input and output files
file_in = 'sample_data.txt';
xl_filename = 'output.xlsx';
% Number of columns (assumed fixed)
n_col = 6;
fIN = fopen(file_in,'r');
% Load each line of the file as cell, split by ',', convert into a table
% entry and add it to the table
tline = fgets(fIN);
res_table = cell2table(cell(0,n_col));
while (ischar(tline))
res_table = [res_table ; cell2table(strsplit(tline,','))];
tline = fgets(fIN);
end
% Change table headers and write to the excel file
res_table.Properties.VariableNames = {'C1' 'C2' 'C3' 'C4' 'C5' 'C6'}
writetable(res_table,xl_filename,'Sheet',1,'Range','A1');
fclose(fIN);
它一次读取文件行并将生成的单元格数组转换为表条目。因为它分裂为','' - '保持不变。 writetable
将表格写入Excel工作表,工作表1从位置A1开始。您可以从不同的职位和工作表编号开始。该功能还有其他可能有用的选项。
此解决方案的缺点是您需要将电子表格显式转换为数字值,而另一方面,几乎是一个选择 - 一次点击过程。据我所知,直接在MATLAB中转换为数字并不简单,因为您的部分条目具有' - '。