Matlab中匿名函数定义中的匿名函数调用

时间:2018-11-23 00:39:03

标签: matlab function anonymous-function

我想知道为什么此代码无法正常工作。如果有人对导致matlab发现这么多错误的原因有任何了解,将不胜感激。

m = 1;
c = 1.5;
fun =@(x, epsilon) 1 .* (1 - (1 - cos(x))/(2.*epsilon)).^c .* cos(m.*x);
a = @(ep) acos(1-(2*ep));

lm =@(e) 1/(2.*pi) .* integral(@(x)fun(x, e), -1.*a(e), a(e));
fprintf('ball bearing at 0.6 is %4.4f', lm(0.6));

我要复制的功能是() =1/2∫[1 − (1 − cos())/2]^ cos()dx

据我所知,在乘法时不需要使用点修饰符,但是Matlab抱怨说,即使不涉及矩阵,这也需要按元素进行运算。

1 个答案:

答案 0 :(得分:1)

根据integral的文档,要集成的功能必须矢量化:

  

对于标量值问题,函数y = fun(x)必须接受向量参数x,并返回向量结果y。通常,这意味着乐趣必须使用数组运算符而不是矩阵运算符。例如,使用.* times )而不是* mtimes )。