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
望大家给看看,期望你的帮助 不要用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
如果按照你的文件格式的话,也可以用textread或textscan,如果前面几行形式不一样,则可以用HeaderLines参数跳过
clear;clc;close all
= textread('data.txt','%s %d', -1);
nn=dat( ~cellfun(@isempty,strfind(txt,'*SET,DISP6')))
nn =
2200
2# messenger [/b
你好版主,更改后还是出现原错误 "Index exceeds matrix dimensions"----说‘指数超过矩阵尺寸’有些不明白,请给指示下 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”
帮帮忙!!! 出现错误的原因是你的result.parm文件的前几行不够长,tline(1:10)要求至少有10个字符,你只有8个,所以才会报错"Index exceeds matrix dimensions"
页:
[1]