fprintf not writing same information from command window
2 ビュー (過去 30 日間)
古いコメントを表示
I want to create two columns. The first column has numbers 1 through 10 from f. The second column has zeros from b, but in certain positions contained in a there needs to be values. Some of the values are duplicates so that is taken care of with the accumarray. I need the zeros to be in the format 0.0 and the numbers have 9 decimal places. When I type out in the command window it had the correct numbers in the correct places but the zeros and number formats are incorrect, but in the xlsreadtrial.txt file it doesn't look correct.



b=zeros(10,1);
% writes zeros
a = xlsread('trial.xlsx','Sheet2','A1:B4');
% reads values from excel
f = (1:1:10)';
% first column values
h=a(:,1);
% breaks a into first column only
n=a(:,2);
% breaks a into second column only
k=[f;h];
% adds first column of a onto the end of f
m=[b;n];
% adds second column of a onto the end of b
p=[k,m];
% combines first and second columns
c = 9 * ones(length(p),1);
c(b==0) = 1;
out=[unique(p(:,1)) accumarray(p(:,1),p(:,2))];
% makes first column values unique and accounts for duplicates
fileID = fopen('xlsreadtrial.txt','w');
fprintf(fileID,'%d,%.f\n',out');
fclose(fileID);
4 件のコメント
Walter Roberson
2018 年 6 月 14 日
Didn't we already deal with this at https://www.mathworks.com/matlabcentral/answers/404005-fprintf-varying-number-of-decimal-places-in-a-column#answer_323200 ?
回答 (1 件)
Jonathon Gibson
2018 年 6 月 14 日
編集済み: Jonathon Gibson
2018 年 6 月 14 日
If you want different formatting depending on the row, you can print each row individually:
fileID = fopen('xlsreadtrial.txt','w');
for row = out'
if row(2) == 0
fprintf(fileID,'%d,%.1f\n',row);
else
fprintf(fileID,'%d,%.9f\n',row);
end
end
fclose(fileID);
Which gives you 9 decimal places if the second column is not equal to 0 and just 1 decimal place for the 0s.
1,0.368945000
2,0.0
3,0.598764523
4,0.0
5,0.500000000
6,0.0
7,0.0
8,0.0
9,0.0
10,0.0
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Low-Level File I/O についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!