阅读从一个文本文件,将它们存储到一个数组中。

303(30天)
词根我有一些“查找表(LUT)”的数据在一个文本文件,其中每个附近地区是一块一个字符串(化学反应)在顶部,然后两列有一个浮在一个列和一个指数在第二,如下所示:
e +二氧化碳- > e +二氧化碳
0 1.057 e-07
0.1 - 1.057 e-07
0.2 - 9.04157 e-08
0.3 - 8.33528 e-08
0.4 - 7.7605 e-08
0.5 - 7.27688 e-08
e +二氧化碳- > CO2p + e + e
0 0
0.1 0
0.2 0
0.3 0
0.4 0
0.5 - 1.64069 e-21
我需要写一个程序读取每一行,并将每一行存储到一个数组中使用。另外,我需要剪出第一列的数字从每个的块(即0,0.1,0.2,0.3,0.4,0.5)。然而,我发现很难读取数据,把它放到一个数组。
我曾试图用一个简单的fgetl程序,但我不知道如何保存到一个数组中每一行:
fid = fopen (“LUT.txt”);
tline = fgetl (fid);
ischar (tline)
disp (tline)
tline = fgetl (fid);
结束
文件关闭(fid);
我也试图使用这个建议,但没有运气用它来处理我的数据: http://www.mathworks.co.uk/help/matlab/import_export/import-text-data-files-with-low-level-io.html f5 - 6402
主要的困难我是指定第一行从每个“块”(化学方程式),然后指定每个块内的所有数据的格式。
任何建议将不胜感激!:)

接受的答案

斯文
斯文 2014年2月27日
编辑:斯文 2014年2月27日
嗨Surush,
诀窍就是把每一行单元格数组的一个元素。
这里有一些注释代码,你想做什么。把线放在单元阵列后,我使用一个正则表达式来选择哪些行是方程,哪些不是。
fid = fopen (“LUT.txt”);
tline = fgetl (fid);
tlines =细胞(0,1);
ischar (tline)
tlines {+ 1, 1} = tline;
tline = fgetl (fid);
结束
文件关闭(fid);
%找到tlines与方程
eqnLines = regexp (tlines,“。* - > *’。,“匹配”,“一次”);
eqnLineMask = ~ cellfun (@isempty eqnLines);
%非线方程转换为第二个数值
我找= (~ eqnLineMask) '
bothNumbers = str2num (tlines{我});
tlines{我}= bothNumbers (2);
结束
%在第一个单元格块与方程
块=细胞(nnz (eqnLineMask), 2);
块(:1)= tlines (eqnLineMask);
%和第二个单元格的数字数组中
eqnLineNos =[找到(eqnLineMask);长度(tlines) + 1];
i = 1:长度(eqnLineNos) 1
第1 = eqnLineNos(我)+ 1:eqnLineNos (i + 1) 1;
块{我2}= cell2mat (tlines(第1));
结束
所以你最终得到的:
> >块
块=
“二氧化碳- > e + e +二氧化碳”(6 x1双)
“e +二氧化碳- > CO2p + e + e”(6 x1双)
> >块{1,2}
ans =
1.0 e-06 *
0.1057
0.1057
0.0904
0.0834
0.0776
0.0728
为你Surush回答这个问题吗?
5个评论
艾德琳战争
艾德琳战争 2023年5月18日在3:57
@Sven 你好斯文。我想读每一行并将其保存在一个变量x,然后读二线,用新值替换的变量。我该怎么做?

登录置评。

更多的答案(0)

类别

找到更多的在数据类型转换帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!