MATLAB: How to format numbers in exponential notation with base 1e3

exponential notationMATLABnumber formatting

Hi,
I want to format numbers to a exponential notation with the base 1e3.
For example I have a vector a:
a = [25.12; 67.29; 120.00; 256.65; 501.58; 1366.26];
All numbers should have the same 5 digits with a precision of 4 in exponential notation with the base 1e3. So the output should be:
b = 1e3 * [0.0251 0.0673 0.1200 0.2567 0.5016 1.3663];
Does anybody know how to do this?
Thanks!

Best Answer

  • This will correctly calculate tha mantissas:
    rfxm = @(x,xpnt) [sign(x).*10.^(log10(abs(x))-xpnt)]; % Anonymous Function Creating Reformatted Number
    so:
    a = [25.12; 67.29; 120.00; 256.65; 501.58; 1366.26];
    xpnt = +3;
    Out = rfxm(a,xpnt)
    produces:
    Out =
    0.0251
    0.0673
    0.1200
    0.2567
    0.5016
    1.3663
    This is as close as I can get to your desired output:
    Out = [sprintf('1e%d * [',xpnt) sprintf('%.4f\t', rfxm(a.',xpnt)) ']']
    .