I'm having trouble trying to write a 2d function with vectorized inputs that has an integral inside.
My function is as follows:
thick = 40e-9;
overlap = (@(E,T)integral2(@(x,y)exp(E.*T.*abs(x-y)),0,thick,0,thick));
If I call the function with scalar inputs, e.g. overlap(1,1), this works fine.
overlap(1,1)
ans = 1.6000e-15
However, if I call the function with vector inputs for E and T, e.g. E=1:1:10 and T=1:1:10, this does not work. I get the following:
Error using .*
Matrix dimensions must agree.
Does anyone know how to make this work with vectorized inputs?
Thanks in advance!

 Respuesta aceptada

Walter Roberson
Walter Roberson el 19 de Jun. de 2018
overlap = @(Ev,Tv) arrayfun( @(E,T) integral2(@(x,y)exp(E.*T.*abs(x-y)),0,thick,0,thick), Ev, Tv);
This assumes that E and T are the same size and the in each case corresponding values are to be taken. The code would need to be modified if you were wanting to have E and T represent marginals for a grid output, such as if you wanted a 10 x 10 output when you pass E and T each of length 10.

Más respuestas (0)

Categorías

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by