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

matlab与ansys联用遇到的问题

[复制链接]
发表于 2010-11-4 16:46:54 | 显示全部楼层 |阅读模式 来自 湖南长沙
现在有个关于matlab与ansys联合运用的问题。现在有个由ANSYS计算得出一个“result.parm"的结果文件。目前我在matlab中想读出“result.parm"文件中一行的内容:
“。。。。。。。。
。。。。。。。。。
。。。。。。。。。
*SET,DISP5   1000
*SET,DISP6   2200
*SET,DISP7   2306
*SET,DISP8   5866
。。。。。。。。。
。。。。。。。。。”
假如“result.parm"文件由上面9行组成,现在我想单独取出“*SET,DISP6 ”后面的2200这个值,并赋给一个变量nn.
现在我编的程序是下面的:
fit=fopen('result.parm','r')
while  ~feof(fit)                         %读到文件结束
        tline=fgetl(fit);                     %读文件的每一行
      if tline(1:10)=='*SET,DISP6'  %如果有一行的第1到10的字符串='*SET,DISP6'  但这行总是出现错误
         nn='*SET,DISP6'               %就输出其后的值
         exit
      end
   continue
end
望大家给看看,期望你的帮助
发表于 2010-11-4 17:18:45 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
不要用exit命令,exit命令是退出Matlab。另外,continue似乎也没用,可以去掉。感觉你好象受fortran的影响。

大致改了一下你的程序,应该可以运行,你可以根据你自己的程序再做修改。

  1. fit=fopen('result.parm','r')
  2. while  ~feof(fit)                         %读到文件结束
  3.         tline=fgetl(fit);                     %读文件的每一行
  4.       if tline(1:10)=='*SET,DISP6'  %如果有一行的第1到10的字符串='*SET,DISP6'  但这行总是出现错误
  5.          nn=str2double(tline(14:17))               %就输出其后的值
  6.       end
  7. end
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-11-4 19:58:10 | 显示全部楼层 来自 河北廊坊
如果按照你的文件格式的话,也可以用textread或textscan,如果前面几行形式不一样,则可以用HeaderLines参数跳过

  1. clear;clc;close all
  2. [txt, dat] = textread('data.txt','%s %d', -1);
  3. nn=dat( ~cellfun(@isempty,strfind(txt,'*SET,DISP6')))
复制代码

  1. nn =
  2.         2200
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2010-11-4 22:07:57 | 显示全部楼层 来自 湖南长沙
2# messenger [/b
你好版主,更改后还是出现原错误 "Index exceeds matrix dimensions"----说‘指数超过矩阵尺寸’  有些不明白,请给指示下
回复 不支持

使用道具 举报

 楼主| 发表于 2010-11-5 14:00:33 | 显示全部楼层 来自 湖南长沙
3# qibbxxt
你好版主,我尝试了下你提供的方法

[txt, dat] = textread('result11.txt','%s %d', -1);
nn=dat( ~cellfun(@isempty,strfind(txt,'*SET,DISP7')))
这个可以实现,能提取出'*SET,DISP7'后面的值

[txt, dat] = textread('result.txt','%s %d', -1,'delimiter',',');
nn=dat( ~cellfun(@isempty,strfind(txt,'*SET,DISP7')))
这个就不可以提取出这个值

'result.txt'与'result11.txt'(在下面的附件里)这两个文件的区别就是把每行中的“,”去掉,去掉后可以实现,不去掉就不可以(即使使用了'delimiter',','语句)

错误提示‘Trouble reading floating point number from file (row1,field2)==>DISP6,34.04591492651  \n”

帮帮忙!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2010-11-8 15:48:18 | 显示全部楼层 来自 江苏南京
出现错误的原因是你的result.parm文件的前几行不够长,tline(1:10)要求至少有10个字符,你只有8个,所以才会报错"Index exceeds matrix dimensions"

评分

1

查看全部评分

回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-10-5 11:18 , Processed in 0.052837 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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