# Formulation to Matlab code

2 views (last 30 days)
Maroco Sc on 14 May 2019
Answered: Steven Lord on 14 May 2019
How to write this formulation in Matlab: is it :
for i=1:N
S(i) = -PT(i) * log(PT(i));
end
##### 2 CommentsShow 1 older commentHide 1 older comment
Maroco Sc on 14 May 2019
I have checked several papers, they did not mention the base of logarithm. if it is 10, then the code will be:
for i=1:N
S(i) = -PT(i) * log10(PT(i));
end
Right?

Steven Lord on 14 May 2019
There's no need to loop. The log and log10 functions can operate on arrays of data, and as long as you use element-wise multiplication you can do this in one line. [Actually, I'll need two; one to create sample data and one for the actual operation.]
PT = 10*rand(10);
S = -PT.*log10(PT);
You can compare this with the result of doing the same operation one element at a time to see if they're different.
S2 = zeros(size(PT));
for whichelement = 1:numel(PT)
S2(whichelement) = -PT(whichelement).*log10(PT(whichelement));
end
S-S2

Raj on 14 May 2019
Since your equation asks for 'log' not 'ln' , I think the code should be:
for i=1:N
S(i) = -PT(i) * log10(PT(i));
end

### Categories

Find more on Logical in Help Center and File Exchange

R2018b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!