在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 中转换为数字并不简单,因为您的部分条目有“-”。
我在 *.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 中转换为数字并不简单,因为您的部分条目有“-”。