Make num2str in engineering format
Show older comments
Hey, I'm writing this code:
disp(['Cutoff frequency: ',num2str(wcutoff,'%e')]);
and this displays the frequency in an normal exponential format, but I want it to be in eng format. This means that instead of:
5.2e10
I want it to show:
52.0e9
Is that possible? A possible workaround could be to use "format shortEng" and than separate the display code into 2 lines, but than I need to find a way that it'll display it in one output line or something like that...
Accepted Answer
More Answers (3)
If you're using release R2021a or later I would use formattedDisplayText instead of evalc.
wcutoff = 5.2e10;
t = formattedDisplayText(wcutoff, 'NumericFormat', 'shortEng')
Harry Dymond
on 16 Jul 2019
1 vote
For the benifit of those stumbling across this old thread in search of answers: my FEX submission num2eng will do what the OP is asking for.
Jos (10584)
on 7 Mar 2014
A similar effect can be obtained by manipulating the string rather than the numbers
X = 52346574 ;
s1 = sprintf('%.2e',X)
v = sscanf(s1,'%d.%de%d')
s2 = sprintf('%d%.1fe%02d',v(1), v(2)/10, v(3)-1)
disp(['Cutoff frequency: ', s2]);
Which can be made into a function handle:
Val2EngString = @(X) sprintf('%d%.1fe%02d',[1 .1 1] .* sscanf(sprintf('%.2e',X),'%d.%de%d').' - [0 0 1])
disp(Val2EngString(2340000000))
1 Comment
Star Strider
on 7 Mar 2014
I never considered that approach. I’ll take a look at it.
Categories
Find more on Symbolic Math Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!