#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).