阅读文本文件,matlab
问题描述:
我正在阅读matlab文本文件'mytext.text'。数据文件看起来像:阅读文本文件,matlab
1 -4436.6910 415.1843 -3019.7497 1,3,4,5,21,23
2 -4366.4541 1353.9975 -3085.1166 1,3,4,23
....
我不知道COL5的长度。我如何在matlab中读取它?
fid=fopen('mytext.text','r');
Grdata = textscan(fid, '%d %f %f %f (Col 5 what should be)% This line is
problem%
fclose(fid);
任何帮助。
答
一种可能性是将最后一列读为字符串,然后将其转换为数字。
fid = fopen('file.dat','r');
C = textscan(fid, '%f %f %f %f %s', ...
'Delimiter',' ', 'MultipleDelimsAsOne',true, 'CollectOutput',true);
fclose(fid);
C = [num2cell(C{1}) cellfun(@str2num, C{2}, 'UniformOutput',false)]
将得到的细胞阵列:
C =
[1] [-4436.7] [415.18] [-3019.7] [1x6 double]
[2] [-4366.5] [ 1354] [-3085.1] [1x4 double]
与:
>> C{1,end}
ans =
1 3 4 5 21 23
>> C{2,end}
ans =
1 3 4 23
答
要读取一行做
% Read at most 4 elements
data1234 = fscanf (fid, '%d %f %f %f', 4);
% Read as many elements as possible, stop when no ',' is found
data5 = fscanf (fid, '%d,');
继续阅读行,直到你到达文件的末尾(在这之前,从节约每一行数据)。所以你需要一些循环,直到文件结束。
是逗号的文件格式的一个组成部分?如果逗号可以替换为空格(如前3个数字),那么您可以使用'dlmread'。读取的结果数据将具有可以告诉您哪些列丢失的维度等等。您正在寻找什么? – Sriram