m0_61663155 2021-10-16 21:25 采纳率: 100%
浏览 265
已结题

matlab中使用arrayfun函数的时候出现错误:未定义与 'function_handle' 类型的输入参数相对应的函数 'sin'

代码:

syms r 
r1=34.5;
a=asin(8.2385e-6*r^3 + 0.000084205*r^2 - 0.0041311*r + 0.38649); 
f=@(r)int(-tan(a)*(sin(a)+r*cos(a))*diff(a),-6.62,r);
v=@(r)(f-r*cos(a))/r1;
fun1=@(r)r*cos(a-v)+r1*sin(v);
fun2=@(r)r*sin(a-v)+r1*cos(v);
b=linspace(-6.62,6.76,15);
fn1=arrayfun(fun1,b);
fn2=arrayfun(fun2,b);
plot(fn1,fn2)

运行结果图片:

img

  • 写回答

1条回答 默认 最新

  • 技术专家团-Joel 2021-10-16 21:55
    关注

    你好同学,不需要一直都用@进行函数描述,当你可以确定最后一个表达式只是关于r的关系时,用matlabFunction会非常方便!
    代码供参考,秘诀还是matlabFunction,因为符号计算最后都可以得到一个函数,真的很好用,向你推荐:

    syms r 
    r1=34.5;
    a=asin(8.2385e-6*r^3 + 0.000084205*r^2 - 0.0041311*r + 0.38649); 
    f= int(-tan(a)*(sin(a)+r*cos(a))*diff(a),-6.62,r);
    v= (f-r*cos(a))/r1;
    fun1=r*cos(a-v)+r1*sin(v);
    fun2=r*sin(a-v)+r1*cos(v);
    fun1 = matlabFunction(fun1);%得到关于r的函数
    fun2 = matlabFunction(fun2);%得到关于r的函数
    b=linspace(-6.62,6.76,15);
    fn1 = zeros(size(b));
    fn2 = zeros(size(b));
    for i = 1:1:numel(b)
       fn1(i) = fun1(b(i)) ;%利用函数求值
       fn2(i) = fun2(b(i)) ;
    end
    plot(fn1,fn2)%画图
    

    效果:

    img

    如有帮助,还望题主给个宝贵的采纳支持一下答主答题哦,先行感谢(●'◡'●)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月24日
  • 已采纳回答 10月16日
  • 创建了问题 10月16日

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?