How to replace variable name in function handle?

I have a function handle as given below
f = @(x1,x2) x1*x2
and I want to change variable name to
f = @(x) x(1)*x(2)
Please help me
Thanks
PS: The function is just for illustration purpose

댓글 수: 1

Hello Matlab mate.
I think you must redefine de function handle just rewriting like this:
f=@(x) prod(x);

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

 채택된 답변

Stephan
Stephan 2019년 2월 25일
편집: Stephan 2019년 2월 25일

1 개 추천

Hi,
for me this worked:
f = @(x1,x2) x1*x2
f = string(char(f));
f = replace(f,"@(x1,x2)","@(x)");
f = replace(f,["x1","x2"],["x(1)","x(2)"]);
f = str2func(f)
result is:
f =
function_handle with value:
@(x1,x2)x1*x2
f =
function_handle with value:
@(x)x(1)*x(2)
Best regards
Stephan

댓글 수: 2

madhan ravi
madhan ravi 2019년 2월 25일
편집: madhan ravi 2019년 2월 25일
stephen what if there are 100 inputs to the function handle? it would be not a good idea
Stephan
Stephan 2019년 2월 25일
편집: Stephan 2019년 2월 25일
You are right. But i think this function is worth to be shown here as an alternative for small examples. Maybe it is not the best / most efficient solution here. Yours is pretty nice - but the OP asked for how to replace variable names in a function handle - this is what i was answering to.

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

추가 답변 (1개)

madhan ravi
madhan ravi 2019년 2월 25일

1 개 추천

Instead of converting it to your later need convert the vector as comma separated list using num2cell():
x=rand(1,2); % example vector
X=num2cell(x);
f(X{:}) % pass the vector all at once

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

질문:

2019년 2월 25일

댓글:

2024년 7월 9일

Community Treasure Hunt

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

Start Hunting!

Translated by