以八度音程读取文本文件时出错

error reading a text file in octave

我有一个名为 xMat.txt 的文本文件,其中一行包含 200 个 space 分隔元素和大约 767 行。

这就是 xMat.txt 的样子。

386.0 386.0 388.0 394.0 402.0 413.0 ... .0 800.0 799.0 796
801.0 799.0 799.0 802.0 802.0 80 ... 399.0 397.0 394.0 391
.
.
.

当我尝试使用 X = dlmread('xMat.txt',' ') 以八度读取文件时,我得到一个大小为 767 X 610 的矩阵。我期待一个大小为 767 X 200 的矩阵,因为一行中有 200 个元素。我该如何解决这个问题?

编辑 - This is my file

您上传的文件 https://bpaste.net/raw/96cf21aa21b8 每行的列数不一致。

$ awk "{print NF}" tmp | sort | uniq -c
      2 200
    754 201
      1 206
      1 217
      1 223
      1 234
      1 237
      1 238
      1 269
      1 273
      1 390
      1 420
      1 610

所以最多的行有 201 列,但有 1 行有 420 列,有 1 行甚至有 610 列。这就是您从 dlmread 获得 767x610 矩阵的原因。

让我们看看哪些行的列数超过 201:

$ awk "{if (NF>201) print NR, NF}" tmp
68 217
580 206
613 390
615 234
657 273
676 610
679 237
720 269
722 238
743 223
762 420

第一列显示行号,第二列显示列数。 所以你有 610 列的行是第 676 行。我还打印了第 676 行:

所以你看到它确实包含数据,没有用零填充的多个空格。