How to Use arrayfun with a Multivariate Function of n Variables?
    8 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
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?
0 commentaires
Réponses (2)
  Arthur Roué
      
 le 3 Août 2020
        
      Modifié(e) : Arthur Roué
      
 le 3 Août 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 commentaires
  Souradeep Mukhopadhyay
 le 3 Août 2020
        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.
0 commentaires
Voir également
Catégories
				En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


