Функциональные ручки - чрезвычайно мощный инструмент в Matlab. Хорошее начало - прочитать онлайн-справку, которая даст вам гораздо больше, чем я могу. В командной строке введите
doc function_handle
Дескриптор функции - это простой способ создать функцию в одну строку. Например, предположим, что я хотел бы численно интегрировать функцию sin (k * x), где k имеет некоторое фиксированное внешнее значение. Я мог бы использовать встроенную функцию, но дескриптор функции гораздо аккуратнее. Определить функцию
k = 2;
fofx = @(x) sin(x*k);
Теперь я могу оценить функцию fofx в командной строке. MATLAB знает, что такое k, поэтому теперь мы можем использовать fofx как функцию.
fofx(0.3)
ans =
0.564642473395035
На самом деле, мы можем передавать fofx как переменную. Например, давайте вызовем quad для численного интегрирования. Я выберу интервал [0, пи / 2].
quad(fofx,0,pi/2)
ans =
0.999999998199215
Как видите, quad выполнил численное интегрирование. (Кстати, встроенная функция была бы, по крайней мере, на порядок медленнее, и с ней гораздо проще работать.)
x = linspace(0,pi,1000);
tic,y = fofx(x);toc
Elapsed time is 0.000493 seconds.
Для сравнения попробуйте встроенную функцию.
finline = inline('sin(x*k)','x','k');
tic,y = finline(x,2);toc
Elapsed time is 0.002546 seconds.
Отличная вещь в дескрипторе функции - вы можете определить его на лету. Минимизируйте функцию cos (x) за интервал [0,2 * pi]?
xmin = fminbnd(@(x) cos(x),0,2*pi)
xmin =
3.14159265358979
Существует множество других применений для функций-манипуляторов в MATLAB. Я только поцарапал поверхность здесь.