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.

 Respuesta aceptada

Torsten
Torsten el 23 de Mayo de 2023
Movida: Torsten el 23 de Mayo de 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 comentarios

Tate Tower
Tate Tower el 5 de Jun. de 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 el 5 de Jun. de 2023
Editada: Torsten el 5 de Jun. de 2023
f is a function handle that depends on the formal inputs i and j:
Tate Tower
Tate Tower el 5 de Jun. de 2023
Got it. Thanks for your help!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Productos

Versión

R2022b

Preguntada:

el 23 de Mayo de 2023

Comentada:

el 5 de Jun. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by