Importing data from a file in a specific way

2 ビュー (過去 30 日間)
g
g 2019 年 3 月 17 日
回答済み: Walter Roberson 2019 年 3 月 17 日
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 件のコメント
g
g 2019 年 3 月 17 日
編集済み: g 2019 年 3 月 17 日
There is no specific reason, I suppose. I was just trying to avoid those very small numbers being interpreted as 0.0000 for instance- I want them to keep their values on the order of 10^-46, etc. I don't believe I'm working with fixed width.
Walter Roberson
Walter Roberson 2019 年 3 月 17 日
%f knows about exponential format.

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2019 年 3 月 17 日
fileID = fopen(file, 'r');
formatSPec = '%f %f %f';
sizeA = [3 Inf]; %notice not [Inf 3]
A = fscanf(fileID, formatSpec, sizeA) .'; %notice transpose
fclose(fileID);
Or
A = cell2mat( textscan( fileread(file), '%f %f %f') );
And afterwards, A(:,2) would be the second column.

その他の回答 (1 件)

Guillaume
Guillaume 2019 年 3 月 17 日
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.

カテゴリ

Help Center および File ExchangeDescriptive Statistics についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by