matlab中的函数句柄使用

代码cal.m:

 1 function  result=cal(a, b, c)
 2 switch c
 3 case '+'
 4     result = a+b;
 5 case '-'
 6     result = a-b;
 7 case '*'
 8     result = a*b;
 9 case '/'
10     result = a/b;
11 case '%'
12     result =mod(a, b);
13 case 'u'
14     result =max(max(a-b,a+b),max(a*b,a/b));
15 case 'b'
16     result =min(min(a-b,a+b),min(a*b,a/b));
17 
18 otherwise
19     disp('operator error, please input again!')
20 end

nestFun.m

1 function [result] = nestFun(fun,a, b, c, d)
2     result = fun(a, b, c) + d;
3 end

testNestFun.m

 1 a =  input('please input a:');
 2 b =  input('please input b:');
 3 c=['+', '-', '*','/','%','u','b'];
 4 d =  input('please input d:');
 5 sizeC=size(c,2);
 6 result = zeros(1,3);
 7 for i=1:sizeC
 8     result(i) = nestFun(@cal, a, b, c(i), d);
 9 end
10 disp(result)

第8行的@cal的@不能省略,否则,运行就会出错。

测试如下:

testNestFun
please input a:12
please input b:3
please input d:2
    17    11    38     6     2    38     6

matlab中灵活使用函数方法就是这么简单。

 

posted @ 2025-11-29 10:14  叕叒双又  阅读(0)  评论(0)    收藏  举报