Evaluating 2D function on 2D grid without using "for" loops

I have a function f(x,y) and I want to evaluate it on x,y grid. For example,
f = @(x,y) x^2+y^2;
x = 1:10;
y = 1:5;
%one way to do it is using for loops.
for x=1:10
for y=1:5
result(x,y) = f(x,y);
end
end
Is there any way do it without using "for" loops?

1 comentario

"Is there any way do it without using "for" loops?"
Why do you want to avoid for loops? Contrary to what some beignners think, (well-written) for loops are not slow.
Is result preallocated before the loops?

Iniciar sesión para comentar.

Respuestas (1)

f = @(x,y) x.^2+y.^2;
x = 1:10;
y = 1:5;
[X,Y] = meshgrid(x,y);
meshc(X, Y, f(X,Y))
grid on
You can try that.
Best of luck.

2 comentarios

Actually, the original function is very large and I will have to put (.) in front of all "^" or "*" operators. It also involves matrix multiplication, so, it will just be very messy if I try to put ".". Is there any way to avoid doing it?
Sorry, I do not know faster way

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Productos

Versión

R2020a

Etiquetas

Preguntada:

el 21 de Ag. de 2020

Comentada:

el 22 de Ag. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by