需要导入的文件如下所示:
MASS INFORMATION:
TOTAL MASS = 12197.
CENTROID (X,Y,Z) = 30.000 0.0000 8.5809
MOMENT OF INTERTIA ABOUT ORIGIN:
IXX = 0.10651E+07 IYY = 0.18383E+08 IZZ = 0.17318E+08
IXY = 0.0000 IYZ = 0.0000 IZX =-0.31397E+07
ROW 1 MATRIX 1
0.69366833E+09 0.12654965E+09 0.0000000 -0.22831656E+09 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
-0.20667723E+09 0.0000000 0.0000000 -0.24801268E+09 -0.24549730E-05
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
-0.48699110E+09 -0.12654965E+09 0.0000000 19696122. 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
ROW 1 MATRIX 2
946.16939 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
93.879840 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
349.12106 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
ROW 2 MATRIX 1
0.12654965E+09 0.26613603E+10 0.0000000 -73506929. 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 -0.26127500E+10 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
-0.12654965E+09 -48610261. 0.0000000 -73506929. 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
ROW 2 MATRIX 2
0.0000000 946.16939 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 93.879840 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 349.12106 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
也就是说,Matrix 1
和Matrix 2
的每一行都包含在此文件中。
但由于文本文件格式不正确,将其转换为矩阵然后导入数据是不可能的。
我想:
1.找到每个ROW X MATRIX 1
2.将下一行N
行转换为矩阵,以便我们轻松读取其数据。具体来说,我需要第1和第2列。因此,我将前2列转换为新矩阵,然后循环遍历它并将其转换为一行。
那么,如何将ROW X MATRIX 1
下方的数据转换为矩阵?
更新:
预期输出,假设我只想要ROW 1 MATRIX 2
:
row2_matrix1=
0.12654965E+09 0.26613603E+10 0.0000000 -73506929. 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 -0.26127500E+10 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
-0.12654965E+09 -48610261. 0.0000000 -73506929. 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
以上是NXN矩阵。 所以稍后我可以轻松地操纵这个矩阵中的日期。
答案 0 :(得分:1)
看看这是否适合你 -
fid = fopen(inputfile); %// Edit inputfile to the path of your text file
tline = fgetl(fid);
num_array = [];
while ischar(tline)
if ~isempty(tline)
tline_valid = strtrim(tline);
if isstrprop(tline_valid(1),'digit') || tline_valid(1)=='-'
num_array{end+1} = tline_valid; %#ok<SAGROW>
end
end
tline = fgetl(fid);
end
fclose(fid);
cell_data = cellfun(@(x) strsplit(x), num_array,'un',0)
out_allcols = str2double(vertcat(cell_data{:}))
out = out_allcols(:,1:2)