首页 文章

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

提问于
浏览
2

我试图从Octave文件中读取矩阵,但我找不到解决方案 . 输入文件是:

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

其中4是行数和列数 . 我希望能够将这些信息存储在一个矩阵中,并能够通过调用它们来使用它的元素,如 a(2,3) .

2 回答

  • 4

    您可以使用dlmread()函数:

    data = dlmread(file,sep,r0,c0)从文本文件中读取矩阵数据,该文件使用数据值之间的分隔符sep . 如果未定义sep,则从文件本身确定字段之间的分隔符 . 给定两个标量参数r0和c0,它们定义了要读取的数据的起始行和列 . 这些值从零开始索引,使得第一行对应于零索引 .

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

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

    通过调用 r0 设置为 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
    

相关问题