| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | function y=dicomrt_mmdigit(x,n,b,t)% dicomrt_mmdigit(x,n,b,t)%% Round values to given significant digits%% x is the array to be rounded% n is the number of significant places% b is the base (b=10 default)% t is the type of algorithm to use to round (t='round' default)%   permitted types are also: 'fix', 'ceil' and 'round'%% If x is immaginary real and immaginary parts are rounded separately%% From "Mastering MATLAB 6" Duane Hanselman and Bruce Littlefield, %       Prentice Hall, 2001 ISBN 0-13-019468-9%% Copyright (C) 2002 Emiliano Spezi (emiliano.spezi@physics.org) if nargin<2    error('dicomrt_mmdigit: Not enough input arguments')elseif nargin==2    b=10;    t='round';elseif nargin==3    t='round';endn=round(abs(n(1)));if isempty(b),b=10;else          b=round(abs(b(1)));endif isreal(x)    y=abs(x)+(x==0);    e=floor(log(y)./log(b)+1);    p=repmat(b,size(x)).^(n-e);    if strncmpi(t,'round',1)        y=round(p.*x)./p;    elseif strncmpi(t,'fix',1)        y=fix(p.*x)./p;    elseif strncmpi(t,'ceil',1)        y=ceil(p.*x)./p;     elseif strncmpi(t,'floor',1)        y=floor(p.*x)./p;    else        error('dicomrt_mmdigit: Unknown rounding request');    endelse % complex input    y=complex(mmdigit(real(x),n,b,t),mmdigit(imag(x),n,b,t));end        
 |