I need to pass from a text file to a matrix in Matlab

1 Ansicht (letzte 30 Tage)
Mark
Mark am 25 Mai 2022
Beantwortet: Image Analyst am 26 Mai 2022
I have the next .txt file.
Name-Goals-Assists-Red cards
Frank-6-2-0
Mike-0-5-4
Ben-23-11-2
I want to transform that into a matrix, for example named P. So that when I put P(1,2) I get 6 or P(3,1) I get Ben. First I use fopen to get the id but then I do not know how to do to have the matrix and not an array of cells.
  1 Kommentar
Stephen23
Stephen23 am 26 Mai 2022
"I do not know how to do to have the matrix and not an array of cells."
A mix of text and numeric cannot be stored in a numeric matrix.
Do not use a cell array, it just makes working with numeric data inefficient.
You should use a table, probably by using READTABLE when you import the data.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Voss
Voss am 25 Mai 2022
You say you want a matrix that contains stuff like the number 6 as well as the string "Ben" (or the character array 'Ben'). That's not possible to do with a matrix because each element of a matrix must be of the same class.
The closest you can get is to use a cell array, because the nice thing about cell arrays is that any element can be of any class.
P = {'Frank' 6 2 0; 'Mike' 0 5 4; 'Ben' 23 11 2} % cell array
P = 3×4 cell array
{'Frank'} {[ 6]} {[ 2]} {[0]} {'Mike' } {[ 0]} {[ 5]} {[4]} {'Ben' } {[23]} {[11]} {[2]}
P{1,2}
ans = 6
P{3,1}
ans = 'Ben'
P = ['Frank' 6 2 0; 'Mike' 0 5 4; 'Ben' 23 11 2] % trying to make a matrix doesn't work
Error using vertcat
Dimensions of arrays being concatenated are not consistent.

Weitere Antworten (2)

Image Analyst
Image Analyst am 25 Mai 2022
After you read this:
attach the actual text file, or at least a part of it if it's too big.
In the meantime did you try
t = readtable(fileName); % Load into table.
P = table2array(t(:, 2:end)) % Convert columns 2 onwards into a matrix called P

Image Analyst
Image Analyst am 26 Mai 2022
Or you could do this:
ca = {'Frank' 6 2 0; 'Mike' 0 5 4; 'Ben' 23 11 2} % Define a cell array
ca = 3×4 cell array
{'Frank'} {[ 6]} {[ 2]} {[0]} {'Mike' } {[ 0]} {[ 5]} {[4]} {'Ben' } {[23]} {[11]} {[2]}
%ca = readcell(fileName); % Read in data from file into a cell array.
t = cell2table(ca) % Convert to a table.
t = 3×4 table
ca1 ca2 ca3 ca4 _________ ___ ___ ___ {'Frank'} 6 2 0 {'Mike' } 0 5 4 {'Ben' } 23 11 2
P = table2array(t(:, 2:end)) % Convert columns 2 onwards into a matrix called P
P = 3×3
6 2 0 0 5 4 23 11 2

Community Treasure Hunt

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

Start Hunting!

Translated by