У меня есть GUI, который принимает введенные пользователем уравнения, такие как delta_P=C1-C2;velocity=diff(y)./diff(x);
, в одной строке, разделенной и оканчивающейся на ;
. Затем в функции GUI я добавляю C1
, C2
, x
и y
, и хочу выполнить оценку для генерации delta_P
и velocity
и назначить их в базовое рабочее пространство. , Моя проблема в том, что я не знаю delta_P
и velocity
заблаговременно, так что я не могу просто сделать:
assignin('base','delta_P',C1-C2);
Мне нужно разбить строку, чтобы определить новые имена переменных слева из знаков равенства и присваивать им, что справа от знаков равенства в базовой рабочей области?
Я задаю строку ввода одним или несколькими операторами, чтобы не было пробела и возврата каретки. Затем я попробовал следующее:
str_in = 'delta_P=C1-C2;velocity=diff(y)./diff(x);'
str_sp = strsplit(str_in,';');
str_sp = str_sp(1:end-1); % last ';' results in an empty char
Затем я заблудился:
cellfun(@(c1,c2)assignin('base',c1(1:c2-1),c1(c2+1:end)),str_sp,cellfun(@(c)strfind(c,'='),str_sp,'uni',0),'uni',0);
- Это не выглядит эффективным
- По-прежнему не работает, поскольку c1 (c2 + 1: end) также является строкой
- Я пытался
eval(c1(1:c2-1))
, но MATLAB жалуется, что C1, C2, x и y не определены .
Спасибо.