在Matlab中读取带有特殊字符的文本文件

Reading Text File In Matlab With Special Characters

我在 *.txt 中有一个原始数据文件,我想使用 Matlab 读取它并使用适当的 headers 将其转换为 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

我可以处理如何添加特定的 headers,但数据进入多行,我认为是由于特殊字符 -

任何人都可以提出更好的方法来逐行将这些数据读入 Matlab 吗? 谢谢。

这对我有用

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);

它一次读取文件行并将生成的元胞数组转换为 table 条目。因为它在 '' 上分裂,所以 '-' 保持不变。 writetable 将 table 写入 excel spreadsheet,Sheet 1 从位置 A1 开始。您可以从不同的位置和 sheet 个数字开始。该函数中还有其他可能有用的选项。

此解决方案的缺点是您需要明确地将价差sheet 转换为数值,另一方面,这几乎是一个选择 - 一次点击的过程。据我所知,直接在 MATLAB 中转换为数字并不简单,因为您的部分条目有“-”。