Custom output of the fprintf

5 ビュー (過去 30 日間)
Giorgos Papakonstantinou
Giorgos Papakonstantinou 2013 年 2 月 8 日
Is there any way to use fprint with an exponential output field (e) for example:
%15.2e
and not get an output such as 3.00e-05 but 30.00e-06? Thank you
  1 件のコメント
José-Luis
José-Luis 2013 年 2 月 8 日
No, you'd have to write a custom function.

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

採用された回答

José-Luis
José-Luis 2013 年 2 月 8 日
編集済み: José-Luis 2013 年 2 月 8 日
Here is a small script to do what you asked for:
val = -0.0000001245332; %for example
tempVal = abs(val);
orderOfMag = floor(log10(tempVal));
if val == 0
orderOfMag = 1;
end
offset = 1 - orderOfMag; %Here you can change the number of digits to the left of the point. for three replace one by two, e.g.
valueToPrint = val.*10.^offset;
precision = 6; %number of display digits
expPrecision = 3; %number of digits in the exponent
if orderOfMag > 0
formatStr = ['%0' num2str(expPrecision) 'i'];
else
formatStr = ['-%0' num2str(expPrecision) 'i'];
end
your_string = [num2str(valueToPrint,precision)...
'e' ...
sprintf(formatStr,abs(orderOfMag-1))];
  2 件のコメント
Giorgos Papakonstantinou
Giorgos Papakonstantinou 2013 年 2 月 8 日
Thank you for providing me with this script Jose. It is very helpful!
José-Luis
José-Luis 2013 年 2 月 8 日
My pleasure.

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

その他の回答 (1 件)

Image Analyst
Image Analyst 2013 年 2 月 8 日
That does not seem to be one of the format specifier options built in. See formatSpec section of the fprintf() help documentation. It would be nice if it were though. I've seen other programs where you can specify "Scientific notation" where the exponent can be any number, and "Engineering Notation" where the exponent is a multiple of 3.
  2 件のコメント
Giorgos Papakonstantinou
Giorgos Papakonstantinou 2013 年 2 月 8 日
編集済み: Giorgos Papakonstantinou 2013 年 2 月 8 日
Thank you. I was searching in the documentation for a long time and I thought I wasn't searching quite enough!
Image Analyst
Image Analyst 2013 年 2 月 8 日
You can send a request for enhancement to support@mathworks.com.

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

カテゴリ

Help Center および File ExchangeLow-Level File I/O についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by