我在MATLAB中创建了一个优化ANSYS研究的代码,所以我想检查ANSYS输出文件并查看结果是否可接受。用Matlab从文件读取特定行并将它们转换为数值
此代码具有ANSYS用于创建模型的输入参数。这些参数在每次迭代时都会发生变化,因此每次迭代时都会创建一个不同的输出文件。
让我们来更具体。下面,存在输出文件的一个例子:
- 线1个布拉布拉
线2布拉布拉
。 。 。
- 线10000最大值
- 线10001值1 2.31 4.56 5.69 8.64 0.25 9.70
- 。
- 。
- 线35000个最大值
- 线35001 values2 2.25
- 。
- 。
- 线70000总値3 2503.4
所有我想要做的是,以查看是否在粗体的前两个值都低于问题的限制(即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
你应该展示你到目前为止的尝试。 –
这取决于你想要的值是否总是在同一行,并且这些行的结构总是相同的。如果是这样,请点击'textscan'。 – nkjt
@nkjt我用'textscan'尝试过,但不幸的是,每次迭代时所需的线条都会不断变化。有没有办法逐行扫描文件来搜索具有所需内容的行? – dolving