How to put a function definition into a string?

10 次查看(过去 30 天)
I have a script, and I have an in-line function definition, for example like this:
f = @(a,x) 1./(1+exp(-tan(a).*(x-a)));
I want to write this function out into a text file, or a string variable. So I need
mystring = '1./(1+exp(-tan(a).*(x-a)))'
or
'@(a,x) 1./(1+exp(-tan(a).*(x-a)))'

采纳的回答

Walter Roberson
Walter Roberson 2017-12-19
f = @(a,x) 1./(1+exp(-tan(a).*(x-a)));
mystring = char(f)
  2 个评论
Mr M.
Mr M. 2017-12-19
Thanks, and whatif I have the name of a function in a string like 'f', and I want to pass this name into char(), so I need char(f), but I have only mystring = 'f'?
Walter Roberson
Walter Roberson 2017-12-19
Then you avoid doing that.
Two approaches:
1) Store all of the handles as fields of a struct. When you get the name such as 'f', use dynamic field names to pull out the content. For this to work, the identifiers must be valid MATLAB variable names:
appropriate_handle = MyStruct.(mystring)
2) Store all of the handles in a cell array, and have another cell array of their corresponding identifiers (which would not have to be valid MATLAB identifier names). When the user selects from one of the identifiers, locate it in the list of identifiers and use the corresponding position to access the content of the cell array:
which_one = input('Which function name do you want?', 's');
[tf, idx] = ismember(which_one, list_of_names);
if tf
appropriate_handle = cell_of_handles{idx};
else
error('That was not a name')
end
or
idx = get(handles.list_of_functions, 'value')
if isempty(idx)
error('You must select an entry from the list')
end
appropriate_handle = cell_of_handles{idx};

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by