读取文本文件在一个特定的文本行但避免只下一行
45 Ansichten(30天)的
Altere Kommentare anzeigen
你好,我是收集数据后“# 7 HHN HHZ”(我只复制后的第一个3行“# 7 HHN HHZ”作为一个例子,可能有数百个),这些列的位置可以改变。我犯了一个脚本为一个特定的文本文件(见例1)
例二:
#
#4所示。评论
#基线纠正
#
#5。加速度数据
#7HHN HHZ
-0.02104708 -0.02134472 0.00412299
-0.00340606 0.08357343 0.02083563
-0.02940362 0.00093856 0.00505147
脚本是一个组合的情况下以下的列定义为textline1, textline2等等,这是必要的,这样可以统一数据(重新)到一个特定的位置作为输出:
textline1 =“# HNE HNN HNZ的;
% %第一混合数据
如果指数= = 0
指数= strcmp (tline textline1);% % EO NS UD
如果指数= = 1;指数= 1;结束
elseif指数= = 1
tmp = sscanf (tline,“% % % f % f”);
tmp1 = [tmp (1);tmp (2);tmp (3)];%重新排列EO Y = X NS = Y UD =
输出=[输出;tmp1 ');
结束
然而,在场的一些记录下面的文本格式,有一个“T”之前要收集的数据(在“# 7 HHN HHZ”):
#
#4所示。评论
#基线纠正
#
#5。加速度数据
#7HHN HHZ
T
-0.02104708 -0.02134472 0.00412299
-0.00340606 0.08357343 0.02083563
-0.02940362 0.00093856 0.00505147
任何帮助来解决这种情况下的编码。非常感谢。
11 Kommentare
Akzeptierte Antwort
dpb
我麦2023嗯20:56
Bearbeitet:dpb
我2023梅嗯12
fn =“//www.tatmou.com/matlabcentral/answers/uploaded_files/1376874/CISMID_SC_SCARQ_NEW_TOCHECH.txt”;
data = readmatrix (fn,“CommentStyle”,{“#”,“T”});
谁数据
(数据(1:5:);南(1、大小(数据,2));数据(end-4:最终,)):
嗯,这是一个壮观的失败,发表/记录注释风格根本没有似乎工作得很好…一些需要深入研究,但可能是值得支持的票如果不找到一个显而易见的原因,我不认为只看文件浏览器中。金宝app
顺便说一句,因为没有什么都部分后,可以显著缩短文件发布之前,而不是失去什么;我是假设有可能后其他部分的数据。
无论如何,让我们做一些有点不同……
选择= detectImportOptions (fn,“Readvariablenames”0,“ExpectedNumVariables”3)
data = readmatrix (fn,选择);
谁数据
:数据(1:5)
好吧,现在我们再次说明了进口检测工具有时不是很好;特别是对于文本文件…总是喜欢尝试更高级的事情,但是当他们不学习,回到蛮力找到头. .
fid = fopen (“W_TOCHECH.txt CISMID_SC_SCAR……”,“r”);% opent低级的文件i / o
n = 0;%初始化行计数器
l =”;%预设行内容
而~包含(l,“加速度数据”)%的加速度数据部分
l = fgetl (fid);
n = n + 1;
结束
为i = 1:3%后发现它,寻找数据,没有一个“T”记录
l = fgetl (fid);
如果比较字符串(l(1),空白(1)|我> 5;打破;n = n - 1;结束%开始测试的记录数据;救助如果出现错误
n = n + 1;
结束
fid =文件关闭(fid);%,关闭文件,做高级阅读
data = readmatrix (fn,“NumHeaderLines”n);
谁数据
:数据(1:5)
还可以使用低级读扫描文件的其他部分从那时起,但是它是有点疼痛,resynch filepointer纪录的betinning resan它,所以我只是保存标题行数和阅读与高级程序。