Array Exponentials without For Loop?

1 vue (au cours des 30 derniers jours)
Alec Huynh
Alec Huynh le 17 Juin 2021
Commenté : Alec Huynh le 25 Juin 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!

Réponse acceptée

Jan
Jan le 17 Juin 2021
A = [1 2 3];
B = [2 3];
C = A .^ (B.')
  4 commentaires
Jan
Jan le 18 Juin 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 le 25 Juin 2021
@Steven Lord, @Jan Thank you for the succinct explanations!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits


Version

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by