【发布时间】:2012-03-16 01:18:12
【问题描述】:
我想将一个文件作为矩阵读入 Matlab,该文件包含奇怪格式的信息。
文件data.txt的数据写成:
04001400 HI 34.50 118.27 19480701 08 LST
0 0 0 0 0 0 0 0 0 0 0 0
MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS
04001400 HI 34.50 118.27 19480801 08 LST
0 0 0 0 0 0 0 0 0 0 0 0
MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS
04001400 HI 34.50 118.27 19480901 08 LST
0 0 0 0 0 0 0 0 0 0 0 0
MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS
第一个数字是站号,HI是case,第三个和第四个数字是经纬度坐标,另一个数字是年月日,另一个数字(08)是时区,紧随其后LST 表示时间范围。以下 24 个数字或上例中的 0 和 MIS 是特定区域和时间的值。我正在尝试以这种维度 [n x 31] 的格式将文件的内容存储为矩阵(其中 31 是列数,n 是文件中的总行数):
04001400 HI 34.50 118.27 19480701 08 LST 0 0 0 0 0 0 0 0 0 0 0 0 MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS
04001400 HI 34.50 118.27 19480801 08 LST 0 0 0 0 0 0 0 0 0 0 0 0 MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS
04001400 HI 34.50 118.27 19480901 08 LST 0 0 0 0 0 0 0 0 0 0 0 0 MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS MIS
我尝试过基于函数 textscan() 以这种方式编码:
fid = fopen('data.txt', 'rt');
data = textscan(fid, '%d %s %f %f %s %d %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s');
fclose(fid);
但它不像我上面描述的那样工作。有没有办法我可以做到这一点?感谢您的帮助。
注意:我想将日期 (19480701) 读取为字符串,以便稍后将其格式化为日期类型。
【问题讨论】: