Importing data from a file in a specific way
Show older comments
I have a file with 3 columns of data.
Here is just a sample of what the data looks like (there are many more rows):
265.54555556 1.09773e-46 1.04772e-23
265.54611111 3.60808e-47 6.00673e-24
265.54666667 1.25291e-46 1.11934e-23
I want to read this into Matlab (with the numbers formatted with the same precision) and be able to work with specific columns. This is what I have. I'm not sure what is going wrong or if I even am reading in the numbers properly for their values.
fileID = fopen(file,'r');
formatSpec='%f %12.5e %12.5e';
sizeA = [Inf 3];
A = fscan(fileID,formatSpec,sizeA);
disp(A);
Additionally, once I have this working, how would I select a specific column?
Thanks!
3 Comments
Walter Roberson
on 17 Mar 2019
Is there a particular reason for using %f %12.5e %12.5e instead of just using %f %f %f ? For example are you working with fixed width such that the columns might run together?
Walter Roberson
on 17 Mar 2019
%f knows about exponential format.
Accepted Answer
More Answers (1)
Guillaume
on 17 Mar 2019
The numbers in your text file have less precision than matlab uses. So, the simplest thing is to load them with csvread (or dlmread):
data = csvread(file);
Note that the precision with which matlab displays the numbers is completely different to the precision at which they're stored. Use format to change the display precision.
Categories
Find more on Low-Level File I/O in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!