1.的创建
函数句柄(
% 函数句柄的创建
% 方式1 : 直接加@
% 语法:@函数名
fun1 = @sin;
% 方式2 : str2func函数
% 语法:str2fun('函数名')
fun2 = str2func('cos');
% 方式3 : 匿名函数
% 语法:@(参数列表)单行表达式
fun3 = @(x, y)x.^2 + y.^2;
% 函数句柄的调用
fun1(pi);
2.将函数句柄作为函数参数
函数对象的经典应用情境之一就是排序(Sorting),即为一列未知类型的数组提供自定义的排序规则。下面我将实现一个函数super_sort,接收两个参数,第一个参数为待排序的数组,第二个参数是一个对原始数据的变换函数。super_sort能够对原始数据按照变换后的结果进行排序,并返回排好序的原始数据。
%文件名:super_sort.m
function sorted = super_sort(arr, fh)
transformed = fh(arr); % 对原始数组进行变换
[~, index] = sort(transformed); % 获得排序后的原数组位置索引
sorted = arr(index); % 返回排序后的原数组
end
测试脚本:
arr = round(randn(8, 1) * 10);
super_sort(arr, @abs) % 将