我在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