将文本文件中的数字组织到 MATLAB 中的 2 列矩阵中

Organising numbers from a text file into a 2 column matrix in MATLAB

所以我试图在 MATLAB 中组织一个 .txt 文件。该文件包含一些三角形的宽度和高度(第一个值除外,它是三角形的数量)。这些数字的组织方式是,第 2 个值是三角形 1 的宽度,第 3 个值是三角形 1 的高度,第 4 个值是三角形 2 的宽度,第 5 个值是三角形 2 的高度,依此类推。文件是这样开始的。

112

5

.2

1 3

1 2 3 5

54 8

81.4724 16.2182

............................

所以我的问题是。我如何让 MATLAB 读取这个文件,只从第二个值开始,然后将它组织成一个(在本例中为 112 x2)矩阵?另外,我是否需要指定它是如何组织数据的?因为我需要它来填充第一行然后第二行等等

到目前为止我有

TriagnleArea = struct(width, height, area)
area = 0.5*width*height
FileID = fopen('SampleText','r')
A = fscanf('SampleText',%f)

你几乎答对了。当您使用 fopen 时,您需要指定 FileID 来确定您打开文件的访问点。您指定的文件名不正确。

接下来,您可以简单地将所有值读入一个数组,提取第一个元素以获得所需的三角形数,然后提取其余值。之后,使用reshape将数组重组为您想要的二维矩阵。

%// Open up file for reading
FileID = fopen('SampleText', 'r');

%// Read all values into a single array
A = fscanf(FileID, '%f');

%// Close the file
fclose(FileID);

%// Pull out total number of triangles
numTriangles = A(1);

%// Look at the rest of the points and reshape them
%// into a N x 2 array
values = reshape(A(2:end), 2, numTriangles).';

这是给定文本文件的示例。在这里,您只指定了 12 个值,因此只有 6 个三角形。因此,我制作了一个如下所示的文本文件:

6

5 .2

1 3

1 2 

3 5

54 8

81.4724 16.2182

如果我们将以上内容放入名为 SampleText 的文件中,这就是我得到的三角形数量以及相应的宽度和高度:

>> numTriangles

numTriangles =

     6

>> values

values =

    5.0000    0.2000
    1.0000    3.0000
    1.0000    2.0000
    3.0000    5.0000
   54.0000    8.0000
   81.4724   16.2182

然后您可以使用宽度和高度的乘积除以 2 来计算每个三角形的面积:

>> areas = values(:,1).*values(:,2)/2

areas =

    0.5000
    1.5000
    1.0000
    7.5000
  216.0000
  660.6678