Array Exponentials without For Loop?

2 views (last 30 days)
Alec Huynh
Alec Huynh on 17 Jun 2021
Commented: Alec Huynh on 25 Jun 2021
Hello, I hope you are doing well! I am not entirely sure how to succinctly describe the question I have, so I will instead demonstrate it.
Let's say I have two arrays:
A = [1 2 3];
B = [2 3];
I would like to do the operation A^B such that I would receive a 2D array C containing the solution of A.^B(1) and A.^B(2).
C(1,:) = A.^B(1);
C(2,:) = A.^B(2);
C = [1 4 9; 1 8 27];
I understand that I could write a For loop like this:
% Full Loop Code
A = [1 2 3];
B = [2 3];
C = zeros(length(B), length(A));
for i = 1: length(B)
C(i, :) = A.^B(i);
end
But I am interested in knowing how to do this using only vectors and not using a For loop. When I do:
C = A.^B
I receive this error:
Error using .^
Matrix dimensions must agree.
Any suggestions? I am using MATLAB 2016b.
Thank you!

Accepted Answer

Jan
Jan on 17 Jun 2021
A = [1 2 3];
B = [2 3];
C = A .^ (B.')
  4 Comments
Jan
Jan on 18 Jun 2021
@Alec Huynh: Thanks, @Steven Lord, for the explanation. An addition, why I've used .' in this case: For real arrays .' and ' produce the same result. It is a good programming practice to avoid assumptions of the inputs, so if I want to transpose the input, .' is the correct operator. Then I do not have to guess, if you (or any other use) is working with real or complex values.
This is the same strategy as e.g. specifying the dimension to operate on:
x = rand(randi(1:3, 2)); % e.g. [1,3], [2,1] or [3,2]
y = sum(x) % ?!? critical: input might be a column or row vector
y = sum(x, 1) % Avoid assumptions
The less assumptions the programmer includes in the code, the less likely is producing a bug or misleading output.
Alec Huynh
Alec Huynh on 25 Jun 2021
@Steven Lord, @Jan Thank you for the succinct explanations!

Sign in to comment.

More Answers (0)

Categories

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

Products


Release

R2016b

Community Treasure Hunt

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

Start Hunting!