我在MATLAB中创建了一个优化ANSYS研究的代码,所以我想查看ANSYS输出文件,看看结果是否可以接受。
此代码具有ANSYS用于创建模型的参数。这些参数在每次迭代时都会发生变化,因此在每次迭代时都会创建一个不同的输出文件。
让我们更具体一点。下面是输出文件的示例:
第2行blabla
。 。
我想要做的就是看看前两个粗体值是否低于问题的极限(即9.70 <15和2.25 <7)。 如果是,则将第三个值以粗体显示在矩阵中。 如果不是,请转到下一次迭代。
我对编程很新,Matlab指令有点令人困惑。
欢迎任何想法!
提前致谢!
**编辑:**到目前为止,这是我的整个代码:
X1=linspace(26,60,3)';
X2=linspace(104,70,3)';
R=linspace(3,10,3)';
vec={X1',X2',R'};
combs=combvec(vec{:})';
seqv=zeros(i,1);
tic
for i=1:length(combs);
fid=fopen('C:\Users\vaioss\Desktop\ergasia ymk\test\aa.txt','w+');
fprintf(fid,'*SET,X1,%7.4f \r\n',combs(i,1));
fprintf(fid,'*SET,X2,%7.4f \r\n',combs(i,2));
fprintf(fid,'*SET,R,%7.4f \r\n',combs(i,3));
fclose(fid);
fid=fopen('C:\Users\...','r+');
fclose(fid);
dos('"C:\Program Files\ANSYS Inc\v150\ANSYS\bin\winx64\ansys150.exe" -p ...');
fid=fopen('C:\Users\...','r');
for j=1:10152;
tline=fgetl(fid);
end
match = textscan(tline, '%s %f %f %f %f %f', '\n')';
seqv(i) = cell2mat(match(6,1));
if seqv(i)>67.2887;
fclose(fid);
continue
end
end
fclose all;
toc
答案 0 :(得分:0)
如果在您想要的信息之前有不同数量的不同格式的行,可能最简单的方法是沿着这些行
1)使用fgetl
一次获取一行(显然,如果您知道可以安全地跳过前3000行或其他任何行,请执行此操作)
2)使用strfind
检查您是否已点击values1
行。如果是,请解析该行并检查该值是否在限制范围内。
如果需要,请重复values2
和values3
,或者转到下一个文件并重复。如果列表中的文件没有包含所有这些字符串的可能性,那么您还需要一些方法来处理在找到它们之前点击eof的情况。