我正在尝试从文件中读取一个矩阵,在Octave中,但我找不到解决方案。
输入文件如下:
4
1 4 2 3
1 4 2 1
4 2 1 4
1 2 1 3
这里的4代表矩阵的行和列数。我希望能够将这些信息存储在一个矩阵中,并且可以通过类似于a(2,3)
的方式来访问它的元素。
我正在尝试从文件中读取一个矩阵,在Octave中,但我找不到解决方案。
输入文件如下:
4
1 4 2 3
1 4 2 1
4 2 1 4
1 2 1 3
这里的4代表矩阵的行和列数。我希望能够将这些信息存储在一个矩阵中,并且可以通过类似于a(2,3)
的方式来访问它的元素。
dlmread()
:
因此,您可以简单地使用一行代码:
data = dlmread(file, sep, r0, c0)
从使用分隔符
sep
在数据值之间的文本文件中读取矩阵数据。如果未定义
sep
,则字段之间的分隔符是从文件本身确定的。给定两个标量参数
r0
和c0
,它们定义要读取的数据的起始行和列。这些值从零开始索引,因此第一行对应于索引零。
data = dlmread('input_file', ' ', 1, 0);
r0
设置为1
调用该函数,您实际上跳过了第一行,其中包含(现在无用的)行数。fscanf
读取所有数据。然后,您可以提取第一个值以获取行数和列数,然后将剩余的数据重塑为预期大小。fid = fopen('data.dat', 'r');
data = fscanf(fid, '%f');
nRows = data(1);
data = reshape(data(2:end), nRows, nRows).';
%// 1 4 2 3
%// 1 4 2 1
%// 4 2 1 4
%// 1 2 1 3
data(2,3)
%// 2
只需输入load + 空格 + 文件名,如:
load fileName.txt
data = fileName;
data(2,3)
data = load('fileName.txt');
fscanf
或相关函数时,无论fopen
的第二个输入是什么,性能都是相同的。 - Suever