matlabmatrixmatlab-table

How to create matrix from data in a text file MATLAB?


I have a text file called epsi_20_20. In this file there is a large table with data. I would like to be able to create in MATLAB a matrix containing only the values of the last six columns. How can I do it? I tried with load but it does not seem to work.

##ASTER 13.06.00 CONCEPT table2 CALCULE LE 02/12/2019 A 10:08:31 DE TYPE          
#TABLE_SDASTER                                                                   
INTITULE         NOEUD    RESU     NOM_CHAM         NUME_ORDRE   INST         ABSC_CURV    COOR_X       COOR_Y       COOR_Z       EPXX         EPYY         EPZZ         EPXY         EPXZ         EPYZ        
node1            N2549    finalmoy EPSI_ELNO                   1  0.00000E+00  0.00000E+00  1.00000E+01  3.50000E+01  0.00000E+00  6.26777E-04 -1.78490E-04  0.00000E+00 -1.63122E-05  0.00000E+00  0.00000E+00
node2            N2556    finalmoy EPSI_ELNO                   1  0.00000E+00  0.00000E+00  1.00000E+01  5.00000E+00  0.00000E+00  6.26779E-04 -1.78490E-04  0.00000E+00  1.63087E-05  0.00000E+00  0.00000E+00
node3            N2561    finalmoy EPSI_ELNO                   1  0.00000E+00  0.00000E+00  9.00000E+01  3.50000E+01  0.00000E+00  6.06777E-04 -1.82032E-04  0.00000E+00  3.99969E-08  0.00000E+00  0.00000E+00
node4            N2570    finalmoy EPSI_ELNO                   1  0.00000E+00  0.00000E+00  9.00000E+01  5.00000E+00  0.00000E+00  6.06777E-04 -1.82032E-04  0.00000E+00 -3.99968E-08  0.00000E+00  0.00000E+00



Solution

  • You can read the file using readmatrix. First, you can specify some import options with delimitedTextImportOptions. For your particular example, it is sufficient to specify that the data starts at line 4, and that you want to join delimiters (spaces).

    opts = delimitedTextImportOptions('DataLines',4, 'Delimiter', ' ', 'ConsecutiveDelimitersRule', 'join')
    A = readmatrix('yourfile.txt', opts) % results in cell array, due to mixed numbers and strings
    

    Then you can select the last 6 columns of the cell array A, and convert the strings to numbers:

    data_of_interest = str2double(A(:,end-5:end));