将文本文件中的数字组织到 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
所以我试图在 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