以八度为单位读取文本文件时出错

时间:2016-06-15 09:08:32

标签: matlab octave file-read

我有一个名为xMat.txt的文本文件,在一行中有200个空格分隔的元素,有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

1 个答案:

答案 0 :(得分:1)

您上传的文件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列,但一列有420列,一列甚至有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

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

line 676

所以你看它确实包含数据,没有多个空格,这些空格都是零填充。