声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1884|回复: 5

[编程技巧] 从文本文档中提取数据

[复制链接]
发表于 2014-7-30 12:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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

使用道具 举报

 楼主| 发表于 2014-7-30 12:15 | 显示全部楼层
这是数据

节点加速度.txt

2.54 KB, 下载次数: 3

发表于 2014-7-30 13:48 | 显示全部楼层
help fscanf ....
 楼主| 发表于 2014-7-30 16:39 | 显示全部楼层


看了依然不懂肿么办,求助,大神!能不能给点具体的程序
 楼主| 发表于 2014-7-31 10:05 | 显示全部楼层

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',[6,inf]);我这样写了fscanf可以实现,但是前提条件是必须把每段Maximum之前的表头去掉,我一个文本有几千个节点,如果每个都要删去表头,这工作量太大了,该如何把每段这样的表头去掉呢?帮帮忙!

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

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

发表于 2014-7-31 14:24 | 显示全部楼层
只是苦工好像试下便可
真没空优化, LZ依实际状况修改优化
  1. fidin=fopen('zzzz.txt','rt'); MaxV=[]; MinV=[];
  2. while ~feof(fidin), ChkStr = fscanf(fidin,'%s',1);
  3.    if strcmp(ChkStr,'Maximum'), A=fscanf(fidin,'%f',[3,1]); MaxV=[MaxV,A(3,1)]; fgetl(fidin);
  4.    elseif strcmp(ChkStr,'Minimum'), A=fscanf(fidin,'%f',[3,1]); MinV=[MinV,A(3,1)]; fgetl(fidin);
  5.    else fgetl(fidin); k=1; end
  6. end
复制代码
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 00:47 , Processed in 0.096765 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表