yueyaquan 发表于 2014-7-30 12:15

从文本文档中提取数据

本帖最后由 yueyaquan 于 2014-7-30 12:15 编辑

我有一个文本文档,数字和文字是交叉的,但是我只想提取节点号和DZ方向对应的极大值和极小值,请问该怎么用MATLAB编程提取呢,原文本很大,为了节省空间和流量,我只复制粘贴了几个节点的信息,其他的格式一样,走过的大神帮帮忙,不胜感激!

yueyaquan 发表于 2014-7-30 12:15

这是数据

ChaChing 发表于 2014-7-30 13:48

help fscanf ....

yueyaquan 发表于 2014-7-30 16:39

ChaChing 发表于 2014-7-30 13:48
help fscanf ....

看了依然不懂肿么办,求助,大神!能不能给点具体的程序

yueyaquan 发表于 2014-7-31 10:05

ChaChing 发表于 2014-7-30 13:48
help fscanf ....

A=fscanf(fidin,'Maximum%f%f%f%f%f%f\nAt Time%e%f%f%f%f%f\nMinimum%f%f%f%f%f%f\nAt Time%e%f%f%f%f%f\n',);我这样写了fscanf可以实现,但是前提条件是必须把每段Maximum之前的表头去掉,我一个文本有几千个节点,如果每个都要删去表头,这工作量太大了,该如何把每段这样的表头去掉呢?帮帮忙!

节点 =9077      加速度 时程       单位体系 ..: mm, kN, sec
-----------------------------------

TIME      DX         DY         DZ         RX         RY         RZ
-------------------------------------------------------------------------

ChaChing 发表于 2014-7-31 14:24

只是苦工好像试下便可
真没空优化, LZ依实际状况修改优化
fidin=fopen('zzzz.txt','rt'); MaxV=[]; MinV=[];
while ~feof(fidin), ChkStr = fscanf(fidin,'%s',1);
   if strcmp(ChkStr,'Maximum'), A=fscanf(fidin,'%f',); MaxV=; fgetl(fidin);
   elseif strcmp(ChkStr,'Minimum'), A=fscanf(fidin,'%f',); MinV=; fgetl(fidin);
   else fgetl(fidin); k=1; end
end
页: [1]
查看完整版本: 从文本文档中提取数据