How do I calculate a logarithm of a variable base?
195 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi!
I tried to calculate a log of a varying base - no success. I saw that calculating log of the base of 10 or e is possible.
for an example: after typing log (a,b) - I recieve an ERROR message.
I'd like to use "a" as a varying number and change it using a loop until I'll get a good result. "a" can be for an example - 1.05, 1.003....
Here it is:
>> a=1.005;
>> log(a,2)
Error using log
Too many input arguments.
Can you please guide me how doing it?
0 Commenti
Risposte (3)
John D'Errico
il 2 Ott 2021
Modificato: John D'Errico
il 2 Ott 2021
Just write your own function. Save it on your search path. Now you have it.
[log(10),logb(10)] % natural log
[log10(5),logb(5,10)] % log(10) to base 5
[log2(3),logb(3,2)] % log(2) to base 3
logb(16,[2 3 4 5 16]) % log(16) to the bases [2,3,4,5,16]
Simple enough.
function L = logb(X,Base)
% log(X) to the base Base
% If Base is not supplied, then the natural log is presumed.
if (nargin < 2) || isempty(Base)
% default case is the natural log
L = log(X);
else
% test for an invalid base
if any(Base<=0) || any(Base == 1)
error('Base must be > 0, and ~= 1')
end
L = log(X)./log(Base);
end
end
0 Commenti
DGM
il 2 Ott 2021
Nowhere in the synopsis for log() does it say that it accepts two arguments.
For base 2, you can just use log2()
More generally, just remember the properties of logarithms and use either log(), log10(), or log2() to compute the arbitrary base-n logarithm.
0 Commenti
Vedere anche
Categorie
Scopri di più su Axis Labels in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!