Why Undefined operator '-' in function_handle?

조회 수: 12 (최근 30일)
Jay
Jay 2020년 4월 7일
편집: Walter Roberson 2020년 4월 7일
When I enter ' H(3) ' in the command line, the following error is shown:
Undefined operator '-' for input arguments of type 'function_handle'.
Error in
Trial_H>@(m)d1+s*(cos(gama)+sum(cos(gama+(pi/2-phi_i))))+((2*r)-omega)*sin(B_j(m))+(r-omega)*sum(sin((1:m-1)*pi-sum(B_j(1:m-1))))
Here is the code:
% Variables
m = 3;
L = 10;
R = 1;
r = R/(m+1);
S = sqrt(2);
s = S/(m+1);
d1 = 1;
d2 = 0.25;
omega = R/(3*(m+1));
gama = atan(R/d1);
% Functions
phi_i = @(ii, m) atan( (d1+(ii*d2)./(m+1) )./(r/3) );
B_j = @(ii, m) 2*phi_i(ii, m);
H = @(m) d1 + s*( cos(gama) + sum(cos(gama+(pi/2-phi_i))) ) + ( (2*r)-omega)*sin(B_j(m) ) + (r-omega)*sum(sin((1:m-1)*pi - sum(B_j(1:m-1))));
  댓글 수: 8
Walter Roberson
Walter Roberson 2020년 4월 7일
편집: Walter Roberson 2020년 4월 7일
H = @(m) d1 + s*( cos(gama) + sum(cos(gama+(pi/2-phi_i))) ) + ( (2*r)-omega)*sin(B_j(m) ) + (r-omega)*sum(sin((1:m-1)*pi - sum(B_j(1:m-1))));
^^^^^^
That is a reference to the anonymous function phi_i but it is not a call to run phi_i with particular parametrs.
B_j = @(ii, m) 2*phi_i(ii, m);
That defines B_j as being a handle to an anonymous function that expects two parameters
H = @(m) d1 + s*( cos(gama) + sum(cos(gama+(pi/2-phi_i))) ) + ( (2*r)-omega)*sin(B_j(m) ) + (r-omega)*sum(sin((1:m-1)*pi - sum(B_j(1:m-1))));
^^^^^^ ^^^^^^^^^^
Those two places, you try to invoke B_j with one parameter.
Where is the ii value coming from that you expect to pass into B_j and phi_i ?
Jay
Jay 2020년 4월 7일
편집: Jay 2020년 4월 7일
I have to input a value for it. Thank you for the very explicit explanation

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Variables에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by