How to Use arrayfun with a Multivariate Function of n Variables?

Suppose f(X) is a function of a vector X = [x1, x2, ..., xn]. How to evaluate the function at a certain range of values, say y1, y2, ..., ym, for the variable xi while keeping all other variables fixed?
To make it simple: Say x1, ..., x59, x61, ..., x100 = 10, and we want to evaluate the function for three different values for x60, say at 1.5, -3, and 12. Can we do this without for loops?

Respuestas (2)

Arthur Roué
Arthur Roué el 3 de Ag. de 2020
Editada: Arthur Roué el 3 de Ag. de 2020
arrayfun is generally not faste than a for loop, becaut it has an internal for loop. read this for more details : https://fr.mathworks.com/matlabcentral/answers/324130-is-arrayfun-faster-much-more-than-for-loop
So I reccomend something like
X = [x1 .. xn];
x60 = [1.5, -3, 12];
Y = NaN(1, numel(x60)); % Pre-allocation (not required for small vectors)
for idx = 1:numel(x60)
X(60) = x60(idx)
Y(idx) = yourFun(X)
end

4 comentarios

Here also for loop is used. Is this possible without a single for loop?
Anotherway is to vectorize the operation in the function. The idea is to create a matrix 3xN where each line is a different version of X and calculate all results in one time.
OK. But how to calculate the 3xN matrix quickly then. Can we do it without for loops?
Can you share the code of your function ?

Iniciar sesión para comentar.

You should make 3 different X arrays here X1, X2, X3 and then pass the 3 arrays in function 3 times to compute y 3 times.

Categorías

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

Productos

Versión

R2019b

Etiquetas

Preguntada:

el 3 de Ag. de 2020

Comentada:

el 4 de Ag. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by