我想从字符串end_header的下一行开始,按照dlmread问题中的建议,使用dlmread函数将铺文件读取到MATLAB矩阵。样本铺层文件给出了这里。当前,起始行是硬编码的,如下所示,但它不适合,因为铺层文件中的标题行数可能会发生变化。
data = dlmread(fileName, ' ', 14, 0);发布于 2015-10-31 12:57:51
有很多不同的方法可以做到这一点。一种选择是使用textscan读取整个文件,并混合使用strfind和find来确定包含类似'end_header'的行
filename = 'testPly.ply';
fid = fopen(filename);
data = textscan(fid, '%s', 'delimiter', '\n');
idx = find(cellfun(@isempty, strfind(data{1}, 'end_header')) == 0);
fclose(fid);然后您可以使用dlmread作为
data = dlmread(filename, ' ', idx, 0);或者基于我的先前的回答提取数字数据。
另一种方法,如果您的文件在'end_header'之后包含了大量数据,但在读取每一行之前不包含很多数据,这可能更好,直到您使用fgets找到'end_header'为止。
idx = 1;
fid = fopen(filename, 'r');
while isempty(strfind(fgets(fid), 'end_header'))
idx = idx + 1;
end
fclose(fid);https://stackoverflow.com/questions/33451725
复制相似问题