How to put a function definition into a string?

8 visualizzazioni (ultimi 30 giorni)
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)))'

Risposta accettata

Walter Roberson
Walter Roberson il 19 Dic 2017
f = @(a,x) 1./(1+exp(-tan(a).*(x-a)));
mystring = char(f)
  2 Commenti
Mr M.
Mr M. il 19 Dic 2017
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 il 19 Dic 2017
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};

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by