chenbinok 发表于 2010-11-4 16:46:54

matlab与ansys联用遇到的问题

现在有个关于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
望大家给看看,期望你的帮助

messenger 发表于 2010-11-4 17:18:45

不要用exit命令,exit命令是退出Matlab。另外,continue似乎也没用,可以去掉。感觉你好象受fortran的影响。

大致改了一下你的程序,应该可以运行,你可以根据你自己的程序再做修改。
fit=fopen('result.parm','r')
while~feof(fit)                         %读到文件结束
      tline=fgetl(fit);                     %读文件的每一行
      if tline(1:10)=='*SET,DISP6'%如果有一行的第1到10的字符串='*SET,DISP6'但这行总是出现错误
         nn=str2double(tline(14:17))               %就输出其后的值
      end
end

qibbxxt 发表于 2010-11-4 19:58:10

如果按照你的文件格式的话,也可以用textread或textscan,如果前面几行形式不一样,则可以用HeaderLines参数跳过

clear;clc;close all
= textread('data.txt','%s %d', -1);
nn=dat( ~cellfun(@isempty,strfind(txt,'*SET,DISP6')))


nn =
      2200

chenbinok 发表于 2010-11-4 22:07:57

2# messenger [/b
你好版主,更改后还是出现原错误 "Index exceeds matrix dimensions"----说‘指数超过矩阵尺寸’有些不明白,请给指示下

chenbinok 发表于 2010-11-5 14:00:33

3# qibbxxt
你好版主,我尝试了下你提供的方法

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

= 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”

帮帮忙!!!

baggio1987 发表于 2010-11-8 15:48:18

出现错误的原因是你的result.parm文件的前几行不够长,tline(1:10)要求至少有10个字符,你只有8个,所以才会报错"Index exceeds matrix dimensions"
页: [1]
查看完整版本: matlab与ansys联用遇到的问题