How to read numeric data with different number of columns

11 vues (au cours des 30 derniers jours)
Jon
Jon le 29 Jan 2025
Commenté : Jon le 30 Jan 2025
I would like to read in the numeric data below into 3 different arrays:
0 0.2 0.5 0.8 into "a_on_t"
4 10 into "Ri_on_t" and
2 5 10 into "2c_on_a"
I code just hard code these in, but it would be better to read them from a file. I was thinking of constructing the file like so:
% Header info describing file contents
% Rows correspond to:
% a / t
% Ri / t
% 2c / a
0 0.2 0.5 0.8
4 10
2 5 10
or, alternatively:
% Header info describing file contents
a_on_t 0 0.2 0.5 0.8
Ri_on_t 4 10
2c_on_a 2 5 10
I would like to be able to extract the names of the arrays in which to store the data from the file and, of course, to extract the numbers from the file. As I am using R2018a I don't have access to the table reading functions. I have tried putting the data into a cell using textscan, but I just end up with a list (or 1D array) of numbers. I definitely need the numbers, I could hard code the names of the arrays for now.
fgetl might be a possibility, but then there is the difficulty of extracting the data from a cell and converting characters to numbers.
Am I missing something obvious? This seems much more difficult than it should be.
Thanks!
  4 commentaires
Stephen23
Stephen23 le 29 Jan 2025
"Am I missing something obvious? This seems much more difficult than it should be."
Jon
Jon le 30 Jan 2025
@Stephen23. Thanks for the link about naming of variables. I have bookmarked this and intend to read it when we have a rainy day and I have a bit of spare time. Looks like a pretty contentious subject! Nor have I ever really understood the eval command, so hope to learn something new.
regards
Jon

Connectez-vous pour commenter.

Réponse acceptée

Adam Danz
Adam Danz le 29 Jan 2025
Modifié(e) : Adam Danz le 29 Jan 2025
Is this what you are looking for?
file = "data.txt";
t = readtable(file, 'ReadRowNames',true,"Delimiter",'\t')
t = 3x4 table
Var1 Var2 Var3 Var4 ____ ____ ____ ____ a_on_t 0 0.2 0.5 0.8 Ri_on_t 4 10 NaN NaN 2c_on_a 2 5 10 NaN
The data file contains comment lines that begin with "%", contains row names, and is tab delimited.
% Header info describing file contents
a_on_t 0 0.2 0.5 0.8
Ri_on_t 4 10
c_on_a 2 5 10
  1 commentaire
Jon
Jon le 30 Jan 2025
Hi Adam. After discovering that readtable was, in fact, available, I came up with something similar, but I re-arranged my input data into columns and used "ReadVariableNames". I prefer your solution where you have used "readrownames", which I was unaware of - it makes the input file easier to read.
Thanks for your help.
Jon

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Text Data Preparation dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by