Taking the sum of exponentials

To do the calculation,
is the following code correct? Is the (:) necessary? I think that makes a column vector, but I don't think it's necessary. I don't think cumsum would be useful here. Could somebody please advise? If it matters, . And a is a vector of .
x = linspace(0.01,100,10000);
f_x = sum(exp(-x./a(:)));

1 Comment

Since a is already a column vector, the (:) is unnecessary, you're right.

Sign in to comment.

 Accepted Answer

Star Strider
Star Strider on 22 Mar 2022
If it matters, . And a is a vector of .’
I don’t see ‘t’ defined anywhere, so it depends on what relationship ‘t’ has to ‘x’ or a.
However, since as @_ noted, since a is already a column vector by definition, the (:) is not necessary. The important aspect is that with respect to MATLAB coding, ‘x./a’ must be a matrix in order that sum produces the row vector necessary for the result.

More Answers (1)

Break it up with simple inputs to see what's going on:
x = [1 2]; % row vector
a = [1 2 3]; % row vector
x./a(:) % implicit expansion makes a 3 x 2 matrix
ans = 3×2
1.0000 2.0000 0.5000 1.0000 0.3333 0.6667
exp(x./a(:)) % element wise exp
ans = 3×2
2.7183 7.3891 1.6487 2.7183 1.3956 1.9477
sum(exp(x./a(:))) % sum down the columns
ans = 1×2
5.7626 12.0551

Categories

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

Products

Release

R2021b

Tags

Asked:

on 22 Mar 2022

Answered:

on 22 Mar 2022

Community Treasure Hunt

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

Start Hunting!