我一直在研究一个令人费解的问题,该问题涉及将一个 ascii 文件读入 matlab,其中包含 2 个不同格式的部分,第一部分还包括不同的列号。
MESH2D
MESHNAME "XXX"
E3T 1 1 29 30 1
E4Q 2 2 31 29 1 1
E4Q 3 31 2 3 32 1
...
...
...
ND 120450 5.28760039e+004 7.49260000e+004 8.05500000e+002
ND 120451 5.30560039e+004 7.49260000e+004 6.84126709e+002
ND 120452 5.32360039e+004 7.49260000e+004 6.97750000e+002
ND 120453 5.34010039e+004 7.49110000e+004 7.67000000e+002
NS 1 2 3 4 5 6 7 8 9 10
NS 11 12 13 14 15 16 17 18 19 20
NS 21 22 23 24 25 26 27 -28
BEGPARAMDEF
GM "Mesh"
我只对包含三角形并以 E3T/E4Q 开头的线以及包含三角形节点坐标并以 ND 开头的相应线感兴趣。对于三角形(E3T/E4Q 线),我只对前 4 个数字感兴趣,因此我试图做这样的事情:
fileID = fopen(test);
t1 = textscan(fileID, '%s',3);
t2 = textscan(fileID, '%s %d %d %d*[^\n]');
fclose(fileID);
所以读入表头跳转到数据然后读取第一个字符串和后面的4个数字,然后跳转到行尾重新开始。但这不起作用。我只得到一行数据,而不是文件的其余部分。另外,我不知道如何处理文件的第二部分,它以任意数量的数字开始(我当然可以手动查找并输入 matlab,但希望 matlab 自动找到格式的这种变化) .
你有什么建议吗?
干杯!