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)))'
0 个评论
采纳的回答
Walter Roberson
2017-12-19
f = @(a,x) 1./(1+exp(-tan(a).*(x-a)));
mystring = char(f)
2 个评论
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 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!