function ValDB = db(X, Y, Z )
% Convert a value to decibel.
% Arguments:
%
% X ... the ratio to be converted to decibel
% Y ... second argument, either a mode string ('Power', 'power', 'Voltage', 'voltage') or a numeric resistor value
% Z ... third argument, numeric resistor value
% Constant strings that select the mode of operation
VOLTAGE_NAMES = {'Voltage', 'voltage'};
POWER_NAMES = {'Power', 'power'};
USAGE = 'Placeholder for a very verbose desciption.';
if(nargin == 1)
U='voltage';
R = 1;
elseif(nargin == 2)
if(ischar(Y))
U = Y;
R = 1;
elseif(isnumeric(Y))
U = 'voltage';
R = Y;
else
disp USAGE
return
end
elseif(nargin == 3)
if( ischar(Y) && isnumeric(Z) )
U = Y;
R = Z;
else
disp USAGE
return
end
else
disp USAGE
return
end
switch U
case VOLTAGE_NAMES
Factor = 20;
case POWER_NAMES
Factor = 10;
R = 1; % Ignore any value for R
otherwise
disp( USAGE );
return
end
% Convert ratio to decibel
ValDB = Factor * log10( X ) - 10 * log10(R);
end