如何根据用户输入在 MATLAB 中创建符号函数
How to make a symbolic function in MATLAB based on user input
我正在尝试根据用户输入的参数在 MATLAB 中创建符号函数,然后使用 fminsearch(fun, x0) 最小化该函数,这似乎只允许符号函数。除了 sym2poly() 之外,我似乎找不到根据用户输入生成任意符号函数的方法,它仅在我想生成多项式函数时才有效。有什么想法吗?
我认为 str2func
是您要找的:
% this is actually your user input, it could be taken,
% for example, using inputdlg function
user_in = inputdlg('Enter your function:','Function'); % '2*x + 4'
% the user input is transformed into a function handle
% that can be passed to fminsearch
fh = str2func(['@(x) ' user_in]);
% the function created from the user input is evaluated
x = fminsearch(fh,x0);
您也可以让用户定义输入参数(但我认为 fminsearch
不需要这样做):
str = '@(x,y) 2*x + 4*y + 1';
fh = str2func(str);
更多信息:
我正在尝试根据用户输入的参数在 MATLAB 中创建符号函数,然后使用 fminsearch(fun, x0) 最小化该函数,这似乎只允许符号函数。除了 sym2poly() 之外,我似乎找不到根据用户输入生成任意符号函数的方法,它仅在我想生成多项式函数时才有效。有什么想法吗?
我认为 str2func
是您要找的:
% this is actually your user input, it could be taken,
% for example, using inputdlg function
user_in = inputdlg('Enter your function:','Function'); % '2*x + 4'
% the user input is transformed into a function handle
% that can be passed to fminsearch
fh = str2func(['@(x) ' user_in]);
% the function created from the user input is evaluated
x = fminsearch(fh,x0);
您也可以让用户定义输入参数(但我认为 fminsearch
不需要这样做):
str = '@(x,y) 2*x + 4*y + 1';
fh = str2func(str);
更多信息: