找回密码
 注册
Simdroid-非首页
查看: 100|回复: 4

求助:如何将cell类型数据高效转化为double数据

[复制链接]
发表于 2014-3-3 17:25:18 | 显示全部楼层 |阅读模式 来自 大连理工大学
悬赏30仿真币未解决
本帖最后由 xiangpan18 于 2014-3-3 17:30 编辑

本人尝试从文档中读入数据到matlab中
数据文件格式为
   ROW   1   NODE     2     DEG. OF. FR. =  UX  

    1 0.12919216E+09    2 0.33745493E+08    3-0.95446667E+08    4 0.00000000E+00
    5 0.00000000E+00    6 0.00000000E+00    7 0.00000000E+00    8 0.00000000E+00
    9 0.00000000E+00   10 0.00000000E+00   11 0.00000000E+00   12 0.00000000E+00
   13 0.00000000E+00   14 0.00000000E+00   15-0.33745493E+08   16-0.33745493E+08
   17 0.00000000E+00   18 0.00000000E+00   19 0.00000000E+00   20 0.00000000E+00
   21 0.00000000E+00   22 0.00000000E+00   23 0.00000000E+00   24 0.00000000E+00
   25 0.00000000E+00
将其读成一行数组,其中的整数是数据在数组中的位置,比如
    1 0.12919216E+09    2 0.33745493E+08    3-0.95446667E+08    4 0.00000000E+00
    5 0.00000000E+00    6 0.00000000E+00    7 0.00000000E+00   

读成 [0.12919216E+09,0.33745493E+08,-0.95446667E+08 ,0.00000000E+00,0.00000000E+00,0.00000000E+00, 0.00000000E+00]
因为数据的长度不一定,我采用的是正则表达式的方式读取
首先读行tline=fgetl(fid);
然后正则表达式tline=regexp(tline,'(?:\s+\d+\s?)|(?:[Ee0-9\-\.\+]+)','match');
这样读出来tline为cell类型
我用for循环,逐个将str2double(tline{i})转化为double型数据,但这样操作很慢,请教有没有高效的方式读取
多谢指教!






附件: 您需要 登录 才可以下载或查看,没有账号?注册
 楼主| 发表于 2014-3-3 17:31:58 | 显示全部楼层 来自 大连理工大学
Simdroid开发平台
要读入的数组维度不一定是25
回复

使用道具 举报

发表于 2014-3-3 19:00:22 | 显示全部楼层 来自 北京
  1. str = fileread('C:\Users\Administrator\Downloads\ZONGGANG.OUT');
  2. s = regexp(str,'\d{1,2}\s?(\-?0\.\d+E\+\d{2})','tokens')
  3. data=str2double(reshape([s{:}],25,[]))
复制代码

评分

1

查看全部评分

回复

使用道具 举报

发表于 2014-3-4 04:46:22 | 显示全部楼层 来自 英国
我试了下,你在主楼放的程序运行效率也还可以接受啊。你跑这个程序用了多久?Matlab是什么版本的?
回复

使用道具 举报

 楼主| 发表于 2014-3-4 12:19:50 | 显示全部楼层 来自 大连理工大学
nwcwww 发表于 2014-3-4 04:46
我试了下,你在主楼放的程序运行效率也还可以接受啊。你跑这个程序用了多久?Matlab是什么版本的? ...

我是matlab2013a,这个程序运行还可以0.159s,但这个维度很小,只有25,我读更大的数据文件时就比较慢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-3 01:34 , Processed in 0.042550 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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