Help to transform math formula to matlab

1 view (last 30 days)
Matthew Lima
Matthew Lima on 14 Nov 2021
Commented: Dave B on 15 Nov 2021
Hello,
I am trying to transform this formula into matlab, but I can't use a for/while loop. X is an array with dimension n and every position receives this sum.
I tried like this, but I couldn't remove the loop here, can I achieve this without a loop?
I also tried to use arrayfun, but without success because every position of the array was receiving the same value.
  7 Comments
Matthew Lima
Matthew Lima on 14 Nov 2021
Thank you so much Dave, I am new to Matlab i didn't realize how simple it is.
Thank's for the clear explanation.
Dave B
Dave B on 14 Nov 2021
Edited: Dave B on 15 Nov 2021
Ah I was trying to avoid doing it for you so that you could feel the satisfaction :) Glad it feels simple, hope it stays that way as you delve deeper!
note this is the simplified version of what you wrote:
x = log(1:n) * sum(exp((1:m).^2))

Sign in to comment.

Answers (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 15 Nov 2021
Using the vectorization:
format long
m=5;
jj=1:m;
XSum1 = sum(log(jj).*exp(jj.^2))
XSum1 =
1.158997425794889e+11
% Or alternatively
Xs = log(jj).*exp(jj.^2);
XSum2=sum(Xs)
XSum2 =
1.158997425794889e+11
% Sum stepby-step:
cumsum(Xs)
ans = 1×5
1.0e+11 * 0 0.000000000378446 0.000000089399921 0.000123277048990 1.158997425794889
  1 Comment
Dave B
Dave B on 15 Nov 2021
Note that i and j are not the same in the question, the correct answer here is:
x = log(1:n) * sum(exp((1:m).^2))
as discussed in the comments above.

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!