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

你好同学,不需要一直都用@进行函数描述,当你可以确定最后一个表达式只是关于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

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