我被困在一个文本文件中保存使用MATLAB确定格式的某些值。例如,我需要将数字85存储为.85E + 2(实际上是.85D + 2,RINEX格式)。但我只能获得8.5E + 1。Matlab - fprintf精度格式问题
那么,我该如何将值存储为.XXXE + n呢?
fileID = fopen('Rinexn.txt','w');
fprintf(fileID,' %0.13e', eph.IODE_sf3);
fclose(fileID);
我被困在一个文本文件中保存使用MATLAB确定格式的某些值。例如,我需要将数字85存储为.85E + 2(实际上是.85D + 2,RINEX格式)。但我只能获得8.5E + 1。Matlab - fprintf精度格式问题
那么,我该如何将值存储为.XXXE + n呢?
fileID = fopen('Rinexn.txt','w');
fprintf(fileID,' %0.13e', eph.IODE_sf3);
fclose(fileID);
您可以使用此方法:
num = 85;
pow = floor(log10(abs(num)))+1;
sprintf('%.3fE%+d', num/10^pow, pow)
或在您的情况:
pow = floor(log10(abs(eph.IODE_sf3)))+1;
fprintf(fileID,'%.3fE%+d', eph.IODE_sf3/10^pow, pow);
基于rahnema1的答案,但更符合的在问题中指定的格式(确切地3位有效数字,无前导零,D
为幂指数字符):
signs = {'+' '-'};
pow = floor(log10(abs(N))) + 1;
fprintf(fileID,...
'%s.%dD%+d\n', ...
signs{(sign(N) < 0) + 1}, ...
round(abs(N)/10^(pow-3)),...
pow);
其中N
是你的电话号码。如果你不是要为正值明确+
做,从细胞中删除+
:
signs = {' ' '-'};
对于高效/便捷矢量(N
是一个向量):
Ns = [signs((sign(N) < 0) + 1)
num2cell(round(abs(N(:).') ./ 10.^(pow(:).'-3)))
num2cell(pow(:)')];
fprintf(fileID,...
'%s.%dD%+d\n', ...
Ns{:});
哪里RINEX放标志? –