How to load numbers from a text file to a .mat file?
20 views (last 30 days)
Show older comments
I have a text file in the following format. How can I load it to a .mat file in its present form?
5
3
3 2 3 4
2 -1 5
3 1 -3 -4
4 Comments
Walter Roberson
on 6 Jan 2022
The only way to get it "exactly like it comes from the file" is in text form.
MATLAB does not have any way to represent arrays that have varying numbers of columns per row (or varying number of rows per column.) There is no way, in MATLAB, to represent "holes" -- you cannot, for example, have a matrix
3 2 3 4
2 -1 5 <hole>
3 1 -3 -4
The closest you can get would be to put NaN in the empty locations.
Accepted Answer
Walter Roberson
on 6 Jan 2022
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/855395/text.txt';
data = readmatrix(filename)
2 Comments
Walter Roberson
on 6 Jan 2022
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/855395/text.txt';
opts = detectImportOptions(filename);
opts.DataLines = [1 inf];
data = readmatrix(filename, opts)
More Answers (2)
Mathieu NOE
on 6 Jan 2022
hi
maybe this
(I assumed you want each individual value stored in a cell)
the cell array can be of course saved to a mat file
a = readcell('data.txt',"Delimiter"," ")
a = 5×4 cell array
{[5]} {1×1 missing} {1×1 missing} {1×1 missing}
{[3]} {1×1 missing} {1×1 missing} {1×1 missing}
{[3]} {[ 2]} {[ 3]} {[ 4]}
{[2]} {[ -1]} {[ 5]} {1×1 missing}
{[3]} {[ 1]} {[ -3]} {[ -4]}
save test.mat a
Voss
on 6 Jan 2022
You can read the file into a character array called text and save it to a .mat file:
% read characters from text file:
fid = fopen('text.txt');
text = fread(fid,'*char').';
fclose(fid);
% save to mat:
save('text.mat','text');
Then load the .mat file to check that it is the same as the text file:
S = load('text.mat');
disp(S.text);
2 Comments
See Also
Categories
Find more on Text Files 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!