读取文本文件在一个特定的文本行但避免只下一行

45 Ansichten(30天)的
你好,我是收集数据后“# 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
dpb
dpb 我2023梅嗯44
上面注意:在最初的代码有错误/返回的索引变量和变量之间的不匹配的返回值 排序 叫我上面固定,但原来的会有问题…

Melden您西奇,嗯祖茂堂kommentieren。

Akzeptierte Antwort

dpb
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”});
数据
类属性名称大小字节数据49626 x4 49626双
(数据(1:5:);南(1、大小(数据,2));数据(end-4:最终,)):
ans = 11×4
南南南南南南南南南南南南南南南南南南南南南南南-20.2870 -0.0259 -0.0098 - 0.0058 0.0448 -0.0758 -0.0541南南-0.0596 0.0094 - -0.0153 -0.0848 0.0277 -0.0031南南
嗯,这是一个壮观的失败,发表/记录注释风格根本没有似乎工作得很好…一些需要深入研究,但可能是值得支持的票如果不找到一个显而易见的原因,我不认为只看文件浏览器中。金宝app
顺便说一句,因为没有什么都部分后,可以显著缩短文件发布之前,而不是失去什么;我是假设有可能后其他部分的数据。
无论如何,让我们做一些有点不同……
选择= detectImportOptions (fn,“Readvariablenames”0,“ExpectedNumVariables”3)
选择=
DelimitedTextImportOptions属性:格式属性:分隔符:{\ t ' ' '}空白:“\ b”LineEnding: {' \ n ' ' \ r \ r \ n”} CommentStyle: {} ConsecutiveDelimitersRule:“加入”LeadingDelimitersRule:“忽略”TrailingDelimitersRule:“忽略”EmptyLineRule:“跳过”编码:“utf - 8”替代属性:MissingRule:“填补”ImportErrorRule:“填补”ExtraColumnsRule:“忽略”变量导入属性:设置类型的名字setvartypeVariableNames: {‘Var1’,‘Var2’,‘Var3} VariableTypes:{“双”、“双”、“双”}SelectedVariableNames: {‘Var1’,‘Var2’,‘Var3} VariableOptions:显示所有3VariableOptions访问VariableOptions sub-properties使用setvaropts/getvaroptsVariableNamingRule:‘修改’位置属性:DataLines:[15正]VariableNamesLine: 0 RowNamesColumn: 0 VariableUnitsLine: 0 VariableDescriptionsLine: 0显示表的预览,使用预览
data = readmatrix (fn,选择);
数据
类属性名称大小字节数据49631 x3 49631双
:数据(1:5)
ans = 5×3
2.0000南南南南南南南南南南南南南-20.2870
好吧,现在我们再次说明了进口检测工具有时不是很好;特别是对于文本文件…总是喜欢尝试更高级的事情,但是当他们不学习,回到蛮力找到头. .
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;
结束
l =“# HNE HNN HNZ的
l =“T”
l =“0.02165885 -0.06615625 0.00254670”
ans = 32
n = 37
fid =文件关闭(fid);%,关闭文件,做高级阅读
data = readmatrix (fn,“NumHeaderLines”n);
数据
类属性名称大小字节数据49608 x3 49608双
:数据(1:5)
ans = 5×3
0.0217 -0.0662 0.0025 0.1372 -0.0853 -0.0040 0.0745 -0.0395 0.0133 -0.0195 0.0550 0.0390 -0.0766 0.0929 0.0681
还可以使用低级读扫描文件的其他部分从那时起,但是它是有点疼痛,resynch filepointer纪录的betinning resan它,所以我只是保存标题行数和阅读与高级程序。

Weitere Antworten (0)

Kategorien

找到更多的在开始使用MATLAB帮助中心文件交换

Produkte


版本

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的