How to replace variable name in function handle?
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
Marco Aurélio
2024-7-9
Hello Matlab mate.
I think you must redefine de function handle just rewriting like this:
f=@(x) prod(x);
采纳的回答
Stephan
2019-2-25
编辑:Stephan
2019-2-25
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
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
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
2019-2-25
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
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!