I need to pass from a text file to a matrix in Matlab
조회 수: 1 (최근 30일)
이전 댓글 표시
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
Stephen23
2022년 5월 26일
"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.
채택된 답변
Voss
2022년 5월 25일
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{1,2}
P{3,1}
P = ['Frank' 6 2 0; 'Mike' 0 5 4; 'Ben' 23 11 2] % trying to make a matrix doesn't work
댓글 수: 0
추가 답변 (2개)
Image Analyst
2022년 5월 25일
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
댓글 수: 0
Image Analyst
2022년 5월 26일
Or you could do this:
ca = {'Frank' 6 2 0; 'Mike' 0 5 4; 'Ben' 23 11 2} % Define a cell array
%ca = readcell(fileName); % Read in data from file into a cell array.
t = cell2table(ca) % Convert to a table.
P = table2array(t(:, 2:end)) % Convert columns 2 onwards into a matrix called P
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Text Files에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!