Vectorizing Loops over Matrix Elements

I was wondering if there is a general method for vectorizing code of the form:
A = zeros(n,m);
for i = 1:n
for j = 1:m
A(i,j) = f[i, j]
end
end
where f[i,j] is some function of i and j.

 Réponse acceptée

Torsten
Torsten le 23 Mai 2023
Déplacé(e) : Torsten le 23 Mai 2023
If the function f "knows" how to cope with two vectors as inputs that don't have the same size: Yes.
E.g.
n = 3;
m = 5;
f = @(i,j) i.'*j;
A = f(1:n,1:m)
A = 3×5
1 2 3 4 5 2 4 6 8 10 3 6 9 12 15

3 commentaires

Tate Tower
Tate Tower le 5 Juin 2023
Thanks for your help! Can you explain what line 3 is doing? I'm not sure what the @(i,j) part of the code does. Is this where I insert my function?
Thanks
Torsten
Torsten le 5 Juin 2023
Modifié(e) : Torsten le 5 Juin 2023
f is a function handle that depends on the formal inputs i and j:
Tate Tower
Tate Tower le 5 Juin 2023
Got it. Thanks for your help!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by