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中灵活使用函数方法就是这么简单。
人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。
浙公网安备 33010602011771号