How to replace variable name in function handle?
6 ビュー (過去 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!