Help to transform math formula to matlab

1 次查看(过去 30 天)
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 个评论
Matthew Lima
Matthew Lima 2021-11-14
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 2021-11-14
编辑:Dave B 2021-11-15
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))

请先登录,再进行评论。

回答(1 个)

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2021-11-15
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 个评论
Dave B
Dave B 2021-11-15
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by