Use a function handle inside another function handle

조회 수: 12 (최근 30일)
Sudipta Ray
Sudipta Ray 2015년 6월 24일
댓글: Sudipta Ray 2015년 6월 25일
I need to find out the integral of some function Let's say f(x).*sin(x). I define a function handle y=@(x)f(x); Now I want to define another function handle z as z = @(x)y.*sin(x) so that I can integrate: int = integral(z,x1,x2). Matlab does not allow me to do this. Is there a way so I can define the function separately and then define the function handle for the integrand?

채택된 답변

Steven Lord
Steven Lord 2015년 6월 24일
You're missing one small piece in your definition of z. You can't multiply a function handle and a numeric value, but you can multiply the numeric value obtained by evaluating that function handle and a numeric value.
f = @cos;
y = @(x) f(x);
z = @(x) y(x).*sin(x); % Note y(x) instead of y
To test, compare evaluating the function using the function handle and evaluating the function normally, by calling COS and SIN:
v = 0:0.1:2*pi;
usingFH = z(v);
usingFun = cos(v).*sin(v);
isequal(usingFH, usingFun)
That last statement will return true.
  댓글 수: 1
Sudipta Ray
Sudipta Ray 2015년 6월 25일
Thank you Steven. It worked perfectly. I should have known, Matlab was giving me this error "operator '*' undefined for function handle". Now it is working fine. I needed this because I want to use different functions as an input.

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

추가 답변 (0개)

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by