write multiple line of text into a text file

28 ビュー (過去 30 日間)
Ali
Ali 2017 年 8 月 3 日
コメント済み: Walter Roberson 2017 年 8 月 5 日
Simple question; I have this variable which I want easily write to a text file (it can be a hundred of lines, I just cut it into 4 to fit here)
app.DCMtxt.Value
ans =
4×1 cell array
'3 Message(s) transmitted '
''
' ws BUS ID Rx Node DLC Cycle Extended'
' ______ ___ ____ __ ____ ___ _____ ________'
  4 件のコメント
Ali
Ali 2017 年 8 月 4 日
編集済み: Ali 2017 年 8 月 4 日
Thanks for the replies. Per, it does not write to the file. I also get: Warning: Escaped character '\s' is not valid. See 'doc sprintf' for supported special characters. I see it reads it line by line, nice!
Ali
Ali 2017 年 8 月 4 日
looks like Per's answer had a typo and otherwise working well, so I'm reposting it with minor change as an answer
fid = fopen('output.txt','w');
for jj = 1 : size( app.DCMtxt.Value, 1 )
fprintf( fid, '%s\n', app.DCMtxt.Value{jj,1} );
end
fclose(fid);

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2017 年 8 月 4 日
fid = fopen('output.txt','w');
fprintf(fid, '%s\n',app.DCMtxt.Value{:}) ;
fclose(fid) ;
  4 件のコメント
Rik
Rik 2017 年 8 月 5 日
You might need to replace the control characters:
escaped_cellstr=app.DCMtxt.Value;
escaped_cellstr=strrep(escaped_cellstr,'%','%%');
escaped_cellstr=strrep(escaped_cellstr,'/','//');
fid = fopen('output.txt','w');
fprintf(fid, '%s\n',escaped_cellstr) ;
fclose(fid) ;
Walter Roberson
Walter Roberson 2017 年 8 月 5 日
No, Rik, that is not needed. That would only be needed if you were using the string content inside the format. For example, the following would be a problem:
fid = fopen('output.txt','w');
for jj = 1 : size( app.DCMtxt.Value, 1 )
fprintf( fid, app.DCMtxt.Value{jj,1} );
fprintf( fid, '\n' );
end
fclose(fid);

サインインしてコメントする。

その他の回答 (1 件)

Will Wilson
Will Wilson 2017 年 8 月 4 日
If you didn't want to use a for loop directly you could use a newer datatype called a table and one if it's helper functions to get the job done. Here is an example:
% Convert your [m x 1] cell array into a MATLAB table.
data = cell2table(app.DCMtxt.Value);
% (Optionally) name the column in your table.
data.Properties.VariableNames = {'DataSet'};
% Write the table out to a text file.
writetable(data,'OutputData');
This should do the trick. Ultimately it will depend on how much control you need on the text file you write out.

カテゴリ

Help Center および File ExchangeText Data Preparation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by