Writing Matlab Table to File

조회 수: 72 (최근 30일)
Paschalis Economou
Paschalis Economou 2020년 12월 27일
답변: Jeff Miller 2023년 9월 27일
I am trying to find an easy way to print nicely-formatted tables to a text file. By "nicely-formatted," I mean the way that tables are displayed in the console (with spacing and column headers; see the example below). I was hoping 'fprintf' would do the trick, but this gives me an error. Surely there has to be a way?
>> names = ["Column 1", "Column 2"];
>> S = table([0; 1; 2; 3], [6; 4; 3; 7], 'VariableNames', names);
>> disp(S);
Column 1 Column 2
________ ________
0 6
1 4
2 3
3 7
>> file = fopen("newfile.txt", 'w');
>> fprintf(file, S);
Error using fprintf
Invalid format.
Note: There is a function 'writeTable,' but that produces raw data files (eg. comma delimited files), which isn't what I want.

답변 (2개)

Ive J
Ive J 2020년 12월 27일
편집: Ive J 2020년 12월 27일
First of all, you are using fprintf incorrectly, and thankfully all MATLAB errors are quite intuitive. This one tells you, you've forgotten to define a format for fprintf. For more info, see the function help.
Next, you've also missed to read writetable help; otherwise you would figure it out that the function allows you to set the delimiter.
S = table([0; 1; 2; 3], [6; 4; 3; 7], 'VariableNames', {'col1', 'col2'});
% write to a tab delimited file
writetable(S, 'newfile.txt', 'delimiter', '\t')
% check it
type newfile.txt
col1 col2
0 6
1 4
2 3
3 7
% read it again in MATLBA
Snew = readtable('newfile.txt')
col1 col2
____ ____
0 6
1 4
2 3
3 7
  댓글 수: 1
Paschalis Economou
Paschalis Economou 2020년 12월 27일
Thanks for your response. I didn't think about using a tab-delimited file. However, it still isn't quite what I wanted. The display in the Matlab console has the columns centred, and a line separating the column headers from their contents. Obviously I could write a function to do all of that, but I was wondering if there was any easy way to just take the format displayed in the console, and print that directly to a file.

댓글을 달려면 로그인하십시오.


Jeff Miller
Jeff Miller 2023년 9월 27일
Try this:
str = formattedDisplayText(S);
str = erase(str,"<strong>");
str = erase(str,"</strong>");
fprintf(file,"%s",str);

카테고리

Help CenterFile Exchange에서 Tables에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by