MATLAB Extract Data from .dat File in MATLAB

  • Thread starter Thread starter ironcross77
  • Start date Start date
  • Tags Tags
    Data Matlab
AI Thread Summary
The discussion revolves around extracting specific data columns from a .dat file using MATLAB. The file contains metadata and a table with three columns: Scan No., Coordinates, and PhotonCount. The user seeks a solution to automate the extraction process for over 2000 similar files, as manual editing is impractical. A suggested approach involves editing the .dat file to retain only the relevant columns and then using MATLAB's "load" function to create a matrix. From this matrix, individual columns can be extracted into vectors. Additionally, a UNIX command is proposed to batch process the files, removing unnecessary lines and creating new files with just the data columns. The conversation emphasizes the need for an automated solution to handle the large volume of files efficiently.
ironcross77
Messages
21
Reaction score
0
Ok I have a .dat file containing these datas:


_________________________________________________________________
Date and Time : 120106 12:31:32 12:31:39
Location: 1509123
Bearing: 135
Angle : 30

Scan No. Coordinates PhotonCount
255 12 1
255 45 32
255 34 1231
255 21 54321
255 24 1231

______________________________________________________________


So, you can see that the file contains an array containing three coloums.

I want to extract these three coloums into an array using MATLAB

Can someone write an .m file that will do the job ?

Thank You
 
Physics news on Phys.org
Just edit the text file so that it contains only the 3 columns of data and nothing else and then give this file some name, say tmp.dat. Then just load it into MATLAB using "load tmp.dat".

This will create a matrix called "tmp" in MATLAB that contains all three columns of data. Then extract each column to a vector using "x=tmp(:,1)", "y=tmp(:,2)" etc.
 
I have more than 2000 of such files. It cannot be done manually.
I need MATLAB to automatically to do it.
 
ironcross77 said:
I have more than 2000 of such files. It cannot be done manually.
I need MATLAB to automatically to do it.

FWIW - if you are working in any flavor of UNIX the text editing capabilities can do what you want in:
Code:
for file in `ls /path/to/files/*.dat`
do
       sfile=`basename $file`
       grep -v -e Date -e Scan -e Loca -e Bear $file > /new/path/$file
done

All that's left = columns of numbers... in 2000 new files. The old ones are not changed.
 
Just use fscanf; intitally call it once for each of the first 6 lines, then use it once more to read the 3 columns into a matrix.
 
create save and load functions...so that the save will emulate the structure of the files that you have...then create teh load function based off the save function and you should eb able to extract all information adn then leave out the ones you want.
 
thanks everybody
 
Back
Top