From a string to function handle of a function handle
古いコメントを表示
Hi,
Is it possible to transform a string into a function handle calling another function handle?
More specifically, consider the following simple example
func1=@(x)mean(x)
tmp='@(x)func1(x)+3'
we know that defining
func2=str2func(tmp)
does not work.
Is there any way to create a function handle using tmp that will work?
Thanks
採用された回答
その他の回答 (1 件)
Walter Roberson
2017 年 7 月 19 日
tmp='@(x)feval(evalin(''caller'',''func1''),x)+3'
2 件のコメント
Patrick Mboma
2017 年 7 月 19 日
Walter Roberson
2017 年 7 月 19 日
The basic issue is that str2func() is operating in a context outside your current workspace, so it does not have access to any variables in your workspace. evalin('caller') gives it that access. You would have the same difficulty with a plain variable:
>> A = 5
A =
5
>> tmp = '@(x) x+A'
tmp =
'@(x) x+A'
>> func2 = str2func(tmp)
func2 =
function_handle with value:
@(x)x+A
>> func2(7)
Undefined function or variable 'A'.
Error in @(x)x+A
str2func always does textual substitutions.
カテゴリ
ヘルプ センター および File Exchange で Data Type Identification についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!