Если вы хотите получить функции g
и Dg
, вы, вероятно, захотите вместо этого вернуть дескрипторы функций.Примерно так:
function [g,Dg] = identity
g = @(x) x;
Dg = @(x) 1;
end
Теперь эта строка:
[g,Dg] = identity;
даст вам две функции, которые вы можете использовать как:
y = g(x);
dy = Dg(x);
Более сложныйНапример, фактические функции, возвращаемые здесь, не так сложны, но это показывает механику.Вы можете создавать сложные функции с настраиваемыми параметрами, управлением потоком и т. Д.: * 10101 *
function [g,Dg] = complicated(scale)
g = @func;
Dg = @deriv_func;
function y = func(x)
y = cos*scale(x);
end
function y = deriv_func(x)
y = -scale*sin(scale*x);
end
end
Аналогично предыдущему, вы теперь делаете:
[g,Dg] = complicated(4.7);
, чтобы получить свои функции.4.7 будет «встроен» в эти дескрипторы, что означает, что он влияет на значение функций g
и Dg
.