вызовы анонимных функций в определениях анонимных функций в Matlab - PullRequest
0 голосов
/ 23 ноября 2018

Я хотел бы знать, почему этот код не работает.если у кого-то есть какая-либо информация о том, что заставляет 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 голосов
/ 23 ноября 2018

Согласно документации integral интегрируемая функция должна быть векторизована:

Для скалярных задач функция y = fun(x) должна принимать вектораргумент x и возврат результата вектора y.Обычно это означает, что fun должен использовать операторы массива вместо матричных операторов.Например, используйте .* ( times ) вместо * ( mtimes ).

...