Calling different anonymous functions from a for loop
    9 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Braden Kerr
 am 25 Nov. 2020
  
    
    
    
    
    Kommentiert: Braden Kerr
 am 25 Nov. 2020
            Hello, 
I have four functions that I need to call various values for and I was wondering if I can make this process faster by creating a four loop to iterate through the various functions. For example, I have four functions q(nu) listed below
q_1 = 1; % Lax-Friedrichs 
q_2 = @(x) abs(x); % FIrst-order Upwind 
q_3 = @(x) x^2; % Lax-Wendroff 
q_4 = @(x) (1/3)+(2/3)*x^2; % Minimun Dispersion 
And I have four values of nu, 
nu = [1.0; 0.75; 0.50; .25];
is it possible to take these equations and put them in an array to call each function when I need it? 
For example, I know this isnt how the code would be written, but I am just trying to show what I mean most clearly. 
q_array = [q_1; q_2; q_3; q_4];
for i = 1:4
    for j = 1:4 
        q_array(i(j));
    end
end
In this, the idea would be to call each nu value for the first q, then call each nu value for the second q and so on. 
I just dont know if Matlab syntax supports this since it q_array would turn each anonymous function into an argument and no longer a function, and I know having each array element of q_array as an anonymous function deosnt work because I tried this and it doesnt work. 
q_array = [1; @(x) abs(x); @(x) x^2; @(x) (1/3)+(2/3)*x^2];
0 Kommentare
Akzeptierte Antwort
  Walter Roberson
      
      
 am 25 Nov. 2020
        q_array = {@(x)ones(size(x)); @(x) abs(x); @(x) x.^2; @(x) (1/3)+(2/3)*x.^2} ;
Now you can
q_array{i}(nu(j))
However I also vectorized the functions so instead of an inner loop,
q_array{i}(nu)
3 Kommentare
  Walter Roberson
      
      
 am 25 Nov. 2020
				That what vectorizing is for, to apply the same calculation to each element individually but in an efficient way
Weitere Antworten (0)
Siehe auch
Kategorien
				Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!