MATLAB函数句柄的小总结

函数句柄在MATLAB使用过程中经常涉及到, 个人小小的汇总一下,有不足和错误之处还望大家多多包涵和指点补充
函数句柄的定义具体参见官方文档https://ww2.mathworks.cn/help/matlab/matlab_prog/creating-a-function-handle.html这里就不多加叙述了
很多MATLAB内置函数使用时都需要涉及到函数句柄,像integral,fzero,fsolve等函数,这里以integral为例
个人目前掌握的创建主要三种方式
一、使用function函数创建自定义函数,在脚本文件使用@调用

例:

s=integral(@(x)fun(x),0,2)
function y=fun(x)
y=x.^2;
end

可得
s =
2.6667
二、使用@匿名函数

fun=@(x) x.^2;
s=integral(fun,0,2)

可得
s =
2.6667

三、使用syms(定义变量)和matlabFunction()将syms变量转换为函数句柄)两个函数结合使用

syms x
y=x^2;
fun=matlabFunction(y);
s=integral(fun,0,2)

可得
s =
2.6667

以上三种方法在求解的函数相对简单时可以互换,即如以上三个例子均是求x平方在0到2上的积分,但有时最好采用其中一种方法
一、当有其他参数需要输入时,最好使用第一种方法

i=1;
s=zeros(1,4);
for a=1:2:7
    s(i)=integral(@(x)fun(x,a),0,2);
    i=i+1;
end
function y=fun(x,a)
y=x.^2+a;
end

即可求得一组积分结果
s =
4.6667 8.6667 12.6667 16.6667
二、当需要函数内部需要先运算时,
例,需要先运算向量a与其转置相乘

syms x
a=[1,x,x^2];
y=a*a';
fun=matlabFunction(y);
s=integral(fun,0,2)

可得
s =
11.0667
此时若使用前两种方法,则因integral的求解方法先给x赋值,再运算,可能出现未定义与函数句柄类型相对应的运算’运算维度不符等问题

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值