如何从八度音调文件中读取矩阵?

时间:2016-04-14 19:13:35

标签: octave

我试图在Octave中读取文件中的矩阵,但我无法找到解决方案。 输入文件是:

4
1 4 2 3
1 4 2 1
4 2 1 4
1 2 1 3

其中4是行数和列数。我希望能够将这些信息存储在矩阵中,并且能够像a(2,3)一样调用它们来使用它们。

2 个答案:

答案 0 :(得分:4)

您可以使用dlmread()功能:

  

data = dlmread(file, sep, r0, c0)

     

从文本文件中读取矩阵数据,该文件在数据值之间使用分隔符sep

     

如果未定义sep,则根据文件本身确定字段之间的分隔符。

     

给定两个标量参数r0c0,它们定义了要读取的数据的起始行和列。这些值从零开始索引,这样第一行对应的索引为零。

所以你可以简单地使用单行:

data = dlmread('input_file', ' ', 1, 0);

通过调用r0设置为1的函数,您实际上正在跳过第一行,其中包含(现在无用的)行数。

答案 1 :(得分: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