我是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开头的行,我会感激不尽。第一行和所有其他行都不重要。 我知道,手动复制并粘贴到新文件将是一个解决方案,但我想了解阅读文件的可能性,并根据我的其他想法进行编辑。 谢谢!
答案 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)