Calling different anonymous functions from a for loop

2 Ansichten (letzte 30 Tage)
Braden Kerr
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];

Akzeptierte Antwort

Walter Roberson
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
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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

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!

Translated by