find all anonymous function in a workspace
古いコメントを表示
There surely has to be a way of doing this: finding all anonymous functions in a specified workspace.
Presumably the solution involves using `whos` but I can't find it on web.
For a specific example suppose my workspace has the following variables
f = @x) x^2 ;
g = @(z,y) x^3 + z;
a = rand(5,3);
b = a^3 + 5;
I want a command that will identify (and return) f and g. A bonus would be for the command to list the arguments of f and g, but I can live without that.
Thanks for any suggestions.
2 件のコメント
Steven Lord
2021 年 12 月 17 日
What's your application? Why are you trying to do this / how would you use this information?
If you're trying to generate a list of possible objective functions to pass into an optimization function, an ODE solver, an integration function, etc. know that some of those functions may accept objects that have an feval method as their "function" input. So you may not be generating all the possible values available for use in that function.
Leo Simon
2021 年 12 月 17 日
採用された回答
その他の回答 (1 件)
% set up some variables in the workspace:
f = @(x) x^2 ;
g = @(z,y) y^3 + z;
a = rand(5,3);
b = a.^3 + 5;
S = whos();
names = {S.name};
classes = {S.class};
function_handle_names = names(strcmp(classes,'function_handle'));
display(function_handle_names);
2 件のコメント
This finds all function handles, not anonymous functions as the question requests.
f = @(x) x^2 ;
g = @(z,y) y^3 + z;
h = @sin; % This is NOT an anonymous function!!!!
a = rand(5,3);
b = a.^3 + 5;
S = whos();
names = {S.name};
classes = {S.class};
function_handle_names = names(strcmp(classes,'function_handle'));
display(function_handle_names);
Voss
2021 年 12 月 17 日
That's a good point.
カテゴリ
ヘルプ センター および File Exchange で Data Type Identification についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!