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 commentaire

"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?

Connectez-vous pour commenter.

Réponses (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 commentaires

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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Produits

Version

R2020a

Commenté :

le 22 Août 2020

Community Treasure Hunt

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

Start Hunting!

Translated by