In many application it is necessary to compute the function of two or more arguments.

Traditionally, we use `for`

-loops. For example, if we need to calculate the `f = exp(-x^2-y^2)`

(do not use this if you need **fast simulations**):

```
% code1
x = -1.2:0.2:1.4;
y = -2:0.25:3;
for nx=1:lenght(x)
for ny=1:lenght(y)
f(nx,ny) = exp(-x(nx)^2-y(ny)^2);
end
end
```

But vectorized version is more elegant and faster:

```
% code2
[x,y] = ndgrid(-1.2:0.2:1.4, -2:0.25:3);
f = exp(-x.^2-y.^2);
```

than we can visualize it:

```
surf(x,y,f)
```

**Note1** - Grids: Usually, the matrix storage is organized *row-by-row*. But in the MATLAB, it is the *column-by-column* storage as in FORTRAN. Thus, there are two simular functions `ndgrid`

and `meshgrid`

in MATLAB to implement the two aforementioned models. To visualise the function in the case of `meshgrid`

, we can use:

```
surf(y,x,f)
```

**Note2** - Memory consumption: Let size of `x`

or `y`

is 1000. Thus, we need to store `1000*1000+2*1000 ~ 1e6`

elements for non-vectorized ** code1**.
But we need

`3*(1000*1000) = 3e6`

elements in the case of vectorized `z`

has the same size as`x`

or `y`

), memory consumption increases dramatically: `4*(1000*1000*1000)`

(~32GB for doubles) in the case of the vectorized `~1000*1000*1000`

(just ~8GB) in the case of This modified text is an extract of the original Stack Overflow Documentation created by following contributors and released under CC BY-SA 3.0

This website is not affiliated with Stack Overflow