No BSD License  

Highlights from
exp2text

image thumbnail
from exp2text by Vasilis Kapetanidis
Converts exponential format to TeX format for annotating plots

numtxt=exp2text(enum,sdig)
function numtxt=exp2text(enum,sdig)
% Converts numerical format to exponential format (multiples of a power of 10)
% to text format with addition of TeX instructions for better visualization in text labels
% 
% enum = numerical value to be print
% sdig = number of significant digits (Optional, default value: 3)
%
% This routine works for both Real and Complex numbers
%
%
% ~ Written by Vasilis Kapetanidis (2007)
%
%
% Example:
% --------
%
%{
 x=0.0014982; % Real Number Example
 y=0.1341+0.325i;  % Complex Number Example
 figure
 text(0.1,0.95,['\bf{Real Numbers:}'])
 text(0.1,0.9,['Simple num2str: ',num2str(x)])
 text(0.1,0.85,['Simple exp format: ',num2str(x,'%.3e')])
 text(0.1,0.75,['exp2text: ',exp2text(x)])
 text(0.1,0.55,['\bf{Complex Numbers:}'])
 text(0.1,0.5,['Simple num2str: ',num2str(y)])
 text(0.1,0.45,['Simple exp format: ',num2str(y,'%.3e')])
 text(0.1,0.35,['exp2text: ',exp2text(y)])
%}

if nargin<2, sdig=3; end
sdig=sdig-1;

if isreal(enum)
    frm=['%.',num2str(sdig),'e']; % exponential format
    tmp=num2str(enum,[frm]);
    idx=find(tmp=='e');
    exnum=str2num(tmp(idx+1:end)); % exponent with no insignificant zeroes
    numtxt=[tmp(1:idx-1),'\cdot10^{',num2str(exnum),'}'];

else % Complex Numbers
    amp=abs(enum);
    ang=angle(enum)/pi;
    
    frm=['%.',num2str(sdig),'e']; % exponential format
    tmp=num2str(amp,[frm]);
    idx=find(tmp=='e');
    exnum=str2num(tmp(idx+1:end)); % exponent with no insignificant zeroes
    numamp=[tmp(1:idx-1),'\cdot10^{',num2str(exnum),'}']; % complex magnitude
    % adding complex phase (3 fractional digits format)
    if ang<0
        numtxt=[numamp,'\cdote^{-i\cdot',num2str(abs(ang),'%.3f'),'\pi}']; 
    else
        numtxt=[numamp,'\cdote^{i\cdot',num2str(ang,'%.3f'),'\pi}']; 
    end

% Remove the following { to use *10^ form on the phase
%{
    tmp=num2str(ang,[frm]);
    idx=find(tmp=='e');
    exnum=str2num(tmp(idx+1:end)); 
    numtxt=[numamp,'\cdote^{',tmp(1:idx-1),'\cdot10^{',num2str(exnum),'}\pii}']; % adding complex phase
%}  
    
end

Contact us at files@mathworks.com