meshgrid values to function without loop

Hello, i want to give x,y coordinates to a self-written function. The current state is, that i use 2 loops. I think that this is a very ugly and computation consuming solution. Can someone help me to improve this?
x = linspace(0,1,11) ;
y = linspace(0,1,11) ;
[X,Y] = meshgrid(x,y) ;
for kk = 1:11
for nn = 1:11
Coordinate = [X(kk,nn) Y(kk,nn)];
Z(kk,nn) = f_SomeFunction(Coordinate,someConstant,...);
end
end

4 comentarios

madhan ravi
madhan ravi el 30 de En. de 2019
Editada: madhan ravi el 30 de En. de 2019
Coordinate = [X Y] % doesn't this do what you want? without loop?
Nimananda Sharma
Nimananda Sharma el 30 de En. de 2019
Hi,
It appears that your function accepts only scalar input
One possible solution would to change your function to use maxtrix?
Christopher Brokmann
Christopher Brokmann el 30 de En. de 2019
its a very long function (~2k lines) which only accepts scalar inputs... before i take the long challenge to change the function to matrix input, i want to change the loops.
Matt J
Matt J el 30 de En. de 2019
Editada: Matt J el 30 de En. de 2019
But the loops don't have any computation in them except your call to f_SomeFunction. There's nothing else there to optimize.

Iniciar sesión para comentar.

 Respuesta aceptada

Rik
Rik el 30 de En. de 2019
If you are not prepared to change the function to accept non-scalar inputs, you can use this code to implicitly use for-loops. This can be faster in some circumstances, and it may look cleaner (even if that is subjective).
Coordinate = [X Y];
someConstant_array=repmat(someConstant,size(Coordinate));
Z = arrayfun(@f_SomeFunction,Coordinate,someConstant_array);

Más respuestas (0)

Categorías

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

Productos

Versión

R2017b

Etiquetas

Preguntada:

el 30 de En. de 2019

Respondida:

Rik
el 30 de En. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by