以八度音程读取文本文件时出错
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 行:
所以你看到它确实包含数据,没有用零填充的多个空格。
我有一个名为 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 行:
所以你看到它确实包含数据,没有用零填充的多个空格。