MATLAB Answers

0

Formulation to Matlab code

Asked by Maroco Sc on 14 May 2019
Latest activity Answered by Steven Lord
on 14 May 2019
How to write this formulation in Matlab:
2.JPG
is it :
for i=1:N
S(i) = -PT(i) * log(PT(i));
end

  2 Comments

What is the base of the logarithm? Is it 10 ? If so, then you must use log10() .
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?

Sign in to comment.

Tags

Products


Release

R2018b

2 Answers

Answer by 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

  0 Comments

Sign in to comment.


Answer by 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

  0 Comments

Sign in to comment.