消除一封信在得到一个矩阵的数据文本文件

35视图(30天)
这个问题被标记dpb
你好,我是收集数据从一个文本文件。rearraged根据此数据列的位置(例如,# 7 HHN HHZ)通过使用texline1, textline2所以儿子。
textline1 = ' # HNE HNN HNZ ';
textline2 = ' # HNE HNZ HNN ';
textline3 = ' # HNN HNE HNZ ';
textline4 = ' # HNN HNZ HNE ';
textline5 = ' # HNZ HNE HNN ';
textline6 = ' # HNZ HNN HNE ';
我从文本文件获得不同的信息,一部分信息(上面有财产的)是遵循和收集所有的数值数据到文件的末尾后“# 7 HHN HHZ”中描述下面的脚本
文本文件的一部分:
5。加速度数据
# 7 HHN HHZ
-0.02104708 -0.02134472 0.00412299
-0.00340606 0.08357343 0.02083563
-0.02940362 0.00093856 0.0050514
脚本的一部分:
% %第一混合数据
如果指数= = 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 ');
结束
这个脚本是完美可行的捕获后的“输出”数据“# 7 HHN HHZ”。唯一的问题是,一些文本文件存在以下情况:
5。加速度数据
# 7 HHN HHZ
T
-0.02104708 -0.02134472 0.00412299
-0.00340606 0.08357343 0.02083563
-0.02940362 0.00093856 0.0050514
字母“T”废墟的所有集合数值数据后“# 7 HHN HHZ”。有一种方法,我只能添加和aditional“脚本线”后“ tmp = sscanf (tline’% % % f % f ');“ 在前面的脚本,消除了字母“T”和捕获数据“tmp1”来重新排列它根据textline(例如,textline1) withouth脚本中做太多改变。因此,对于一个字母“T”的情况出现后“# 7 HHN HHZ”只是摆脱它,只有抓住数值。
谢谢你的回应

接受的答案

dpb
dpb 2023年5月8日15:49
编辑:dpb 2023年5月10日12:14
我给你的答案在早些时候这两个 <原始问?线程> 位置和后续讨论。
将关闭这个不久重复. .
但是,先前的评论/示例代码返回后采样通道,重塑前面的代码类似。
记住,问吗?你问之前是只读取一个数据数组;你没有提供交易背景下构建一个更通用的解决方案……“帮助我们帮助你!”
函数acc = getAccel (fid, chnlstr)%认为文件已经打开,通过处理,通道字符串标识在前面的函数
%发现加速度的形式
% # 5。加速度数据
% # HNE HNN泥
% T
0.02165885 -0.06615625 0.00254670
0.13723481 -0.08534159 -0.00400487
%返回加速度数据匹配字符串寻找频道
MATCHSTR = chnlstr;
l = fgetl (fid);
~ startsWith (l, MATCHSTR)
l = fgetl (fid);
结束
acc = fscanf (fid,' % f ',3正)。”;%试图假设数据转换(没有“T”记录)
如果isempty (acc)%如果失败了,一定是T记录,跳过它
fgetl (fid);
acc = fscanf (fid,' % f ',3正)。”;%现在accel数据读
结束
结束
警告:Semi-Air代码! ! !但是测试本土创意文本文件,包含了“T”和一些accel数据。
sprintf 会失败,把文件指针无动于衷如果不成功;因此,那么 fgetl 将记录并把它扔到桶和离开定位阅读后续数据。
注意:这个例程 关闭文件句柄;剩下的顶级的例程;它还不排序输出数组;分类指数将这个函数被调用之前刚刚检索和顶级代码可以重排。或者,你可以选择通过索引数组,做内部,你的电话在保理代码。
上面也不检查错误;如果正确使用正确的序列,它不应该不能匹配字符串输入通道,但是它永远不会伤害到检查feof()或添加一个“纾困”计数器来处理任何此类事件干净。
再次,我会强调将任务分解到小的各个部分,然后把这些一起在更高的水平。
5个评论
dpb
dpb 2023年5月9日在《在福音》里
错误:
“注:我忘了把第二fscanf else子句,以避免试图读取成功后第一次……”
这是一个错误,太……它不属于一个 其他的 条款,这属于内部 如果 构建读取数据后将里头的“T”记录。

登录置评。

更多的答案(0)

下载188bet金宝搏


释放

R2021a

社区寻宝

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

开始狩猎!

翻译的