MATLAB — преобразование строки в математическую функцию

#matlab

#matlab

Вопрос:

Я пытаюсь создать приложение в Matlab, которое будет принимать пользовательский ввод в виде строки, преобразовывать его в математическую функцию и отображать его.

Проблема в том, что я не знаю, как преобразовать строку в математическую функцию. Это то, что я пробовал:

 f = get(handles.edit1, 'string');
n=0:length(f)-1;
func = str2func(f);
plot(n,func);
  

Поэтому, если пользователь вводит sin(x) данные, они должны быть нанесены на график.

Ответ №1:

обычно вам нужно указать значения, при которых вы строите функцию, если это не проблема, я бы заменил plot на ezplot

также предполагается, что функция принимает только одну переменную

 f = get(handles.edit1, 'string');
a = strfind(f,'(')-1;
func = str2func(f(1:a));
ezplot(func)
  

если вам нужен диапазон значений для построения функции, я бы использовал вместо этого fplot

 fplot(func,limits)
  

Комментарии:

1. Спасибо за упоминание ezplot. После изучения документов для ezplot я обнаружил, что могу решить свою проблему следующим образом: f = get(handles.edit1, ‘string’); ezplot(f). Спасибо

Ответ №2:

Используйте eval

 f = get(handles.edit1, 'string');
n=0:10;
plot(n,eval(f));
  

Ответ №3:

Я решил свою проблему, используя ezplot :

 f = get(handles.edit1, 'string');
ezplot(f)
  

Этот код может отображать любую функцию y (x).