Aktualnie koduję symulację w MATLAB i potrzebuję pomocy w odniesieniu do problemu, który miałem.MATLAB: Scalanie uchwytów funkcji
pracuję na problem gdzie mam n
oddzielna funkcja anonimowa obsługuje f_i
, z których każdy jest przechowywany w macierzy komórkowej functions
i akceptuje 1x1 tablicy numerycznej x_i
i zwraca tablicę 1x1 numeryczny y_i
.
Próbuję połączyć każdy z tych funkcji anonimowej uchwyty w jeden uchwyt anonimowej funkcji, które akceptuje pojedynczy n
x 1
tablicę numeryczną X
i zwraca pojedynczą n
x 1
-numeric tablicę Y
. Tutaj X(i) = x_i
, Y(i) = y_i = f_i(x_i)
Jako przykład niech n = 2
i f_1 i f_2 być dwa funkcja obsługuje że wejściowych i wyjściowych 1x1
tablic i są przechowywane w tablicy komórek nazwanych funkcji
f_1 = @(x_1) x_1^2
f_2 = @(x_2) x_2^3
functions = {f_1,f_2}
I w zasadzie trzeba kod, który będzie być w stanie użyć n
,i f_2
do skonstruowania uchwytu funkcyjnego F, który wprowadza i wyprowadza tablicę numeryczną 2x1
.
F = @(x) [f_1(x(1,1));f_2(x(2,1))]
Dzięki za to! Potrzebuję kod, aby być efektywnym, jak to możliwe, więc prawdopodobnie użyję twojej funkcji i usuń argumenty długości/assert ... Czy byłbyś też wiedzieć, czy feval jest szybszy niż przy użyciu oceny funkcji inline?To znaczy, że y (i) = f {i} (x (i)) będzie szybszy niż y (i) = feval (f {i}, x (i))> –