Matlab - 读取非结构化文件

时间:2015-02-01 17:46:04

标签: matlab

我是Matlab的新手,我一直在寻找以下问题:我有一个非结构的txt文件,有几行我不需要,但有一个该文件中具有结构化格式的行数。我一直在研究如何加载"要编辑它的文件,但找不到任何内容。 由于我不知道自己是否清楚,让我告诉你文件中的内容:

8782 PROJCS [" UTM-39",GEOGC .......

1 676135.67755473056 2673731.9365976951 -15 0

2 663999.99999999302 2717629.9999999981 -14.00231124135486 3

3 709999.99999999162 2707679.2185399458 -10 2

4 679972.20003752434 2674637.5679516452 0.070000000000000007 1

5 676124.87132483651 2674327.3183533219 -18.94794942571912 0

6 682614.20527054626 2671000.0000000549 -1.6383425512446661 0

...........

8780 682247.4593014461 2676571.1515358146 0.1541080392180566 0

8781 695426.98657108378 2698111.6168302582 -8.5039945992245904 0

8782 674723.80100125563 2675133.5486935056 -19.920312922947179 0

16997 3 21

1 2147 658 590

2 1855 2529 5623

.........

如果有人可以告诉我是否有可能打开文件以后再加载从1开始的行到8782开头的行,我会感激不尽。第一行和所有其他行都不重要。 我知道,手动复制并粘贴到新文件将是一个解决方案,但我想了解阅读文件的可能性,并根据我的其他想法进行编辑。 谢谢!

1 个答案:

答案 0 :(得分:0)

% Now lines{i} is the string of the i'th line.
lines = strsplit(fileread('filename'), '\n')

% Now elements{i}{j} is the j'th field of the i'th line.
elements = arrayfun(@(x){strsplit(x{1}, ' ')}, lines)

% Remove the first row:
elements(1) = []

% Take the first several rows:
n_rows = 8782
elements = elements(1:n_rows)

或者,如果您需要采取的行数未修复,您可以将上面的最后两个语句替换为:

firsts = arrayfun(@(x)str2num(x{1}{1}), elements)
n_rows = find((firsts(2:end) - firsts(1:end-1)) ~= 1, 1, 'first')
elements = elements(1:n_rows)