MATLAB Answers


adding headers when using fprintf to write to text

Danielle Leblance さんによって質問されました 2016 年 12 月 30 日
最新アクティビティ Image Analyst
さんによって コメントされました 2016 年 12 月 31 日
I am writing a matrix to text using the following codes:
fid = fopen('Datav1Call_1993.txt','w+');
for idx = 1:size(DataPaper,1)
line = DataPaper(idx,~isnan(DataPaper(idx,:))); % creates the line of data without NaNs
fprintf(fid,[repmat('%d ',1,length(line)),'\n'],line);
how can i add headers to the columns?

  1 件のコメント

2016 年 12 月 30 日
Write 'em before the loop after you open the file...result will likely be more satisfactory for looking at if you use widths on the field specifications to line things up...

サインイン to comment.


1 件の回答

Image Analyst
回答者: Image Analyst
2016 年 12 月 30 日

For example, after fopen() and before the loop:
if fid == -1
errorMessage = sprintf('Error opening Datav1Call_1993.txt')
return; % Bail out
% Now write header string.
fprintf(fid, 'header 1 header 2 header 3 whatever \n');

  6 件のコメント

Danielle Leblance 2016 年 12 月 30 日
thanks that was very helpful
2016 年 12 月 31 日
>> ['first',
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
Image Analyst
2016 年 12 月 31 日
Yes, the triple dots are needed Danielle. With them it's like ['first', 'second', 'last'] which equals 'firstsecondlast', a single 1-d character array. Without them it tries to make a 2D array and for that to succeed, all strings need to be the same length because you can't have a 2-D array with a ragged right edge. However this demo works:
s1 = ['first', ...
'second', ...
s2 = ['first-',
You get
s1 =
s2 =
Note you get a 1-D character array for the first and a 2-D array for the second. I padded the strings so that all strings had 6 characters so now it can make a 3 by 6 character array.

サインイン to comment.

Translated by