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

31 views (last 30 days)
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);
Is there any way do it without using "for" loops?
  1 Comment
Stephen23 on 22 Aug 2020
"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?

Sign in to comment.

Answers (1)

Sara Boznik
Sara Boznik on 21 Aug 2020
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.
Luqman Saleem
Luqman Saleem on 21 Aug 2020
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?

Sign in to comment.


Find more on Loops and Conditional Statements in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!