Search code examples
matlaboctavefile-read

error reading a text file in octave


I have a text file named xMat.txt which has 200 space separated elements in one line and some 767 lines.

This is how xMat.txt looks.

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
.
.
.

When I try to read the file in octave using X = dlmread('xMat.txt',' ') I get a matrix of size 767 X 610. I am expecting a matrix of size 767 X 200 since there are 200 elements in one row. How can I solve this problem?

Edit - This is my file


Solution

  • Your uploaded file https://bpaste.net/raw/96cf21aa21b8 has incosistent number of columns per row.

    $ 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
    

    So the most rows have 201 columns but one has 420 columns and one even has 610 columns. This is the reason you get a 767x610 matrix from dlmread.

    Lets look which lines have more than 201 columns:

    $ 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
    

    The first coloumn shows the line number, the second number of columns. So your line with 610 columns is line number 676. I aslo printed line 676:

    line 676

    so you see it really contains data, no multiple spaces which are filles with zeros.