Как правильно вызвать GEKKO из Matlab

Я нашел функцию для вызова python из Matlab. Итак, я попытался использовать эту функцию для вызова пакета GEKKO из Matlab для решения ODE. Я получил сообщение об ошибке при определении параметра gekko (remote = true) как функции или переменной.

Я открыл Matlab с помощью Anaconda Prompt.

m = py.gekko.GEKKO(remote==True);
m.time = py.numpy.linspace(0,20,100);
k = 10;
y = m.Var(5.0);
t = m.Param(m.time);
m.Equation(k*y.dt()==-t*y);
m.options.IMODE = 4;
m.solve(disp==True)

time = cellfun(@double,cell(m.time.tolist()));
y = cellfun(@double,cell(y.VALUE.value));
plot(time,y)
xlabel('Time')
ylabel('y')

сообщение об ошибке Неопределенная функция или переменная 'remote'.

Ошибка в ODE_gekko_matlab (строка 5) m = py.gekko.GEKKO (remote == True); % Решить на локальном компьютере


person Junho Park    schedule 17.06.2019    source источник


Ответы (1)


Перейдите по этой ссылке, чтобы узнать, как использовать pyargs в Матлабе. Попробуйте использовать m = py.gekko.GEKKO (pyargs ('remote', 'True'));

m = py.gekko.GEKKO(pyargs('remote' , 'True'));
m.time = py.numpy.linspace(0,20,100);
k = 10;
y = m.Var(5.0);
t = m.Param(m.time);
m.Equation(k*y.dt()==-t*y);
m.options.IMODE = 4;
m.solve(disp==True)

time = cellfun(@double,cell(m.time.tolist()));
y = cellfun(@double,cell(y.VALUE.value));
plot(time,y)
xlabel('Time')
ylabel('y')

введите здесь описание изображения

person reyPanda    schedule 17.06.2019
comment
Я только что тестировал в Matlab, и 'True' (верхний регистр) или 'true' (нижний регистр) работают одинаково. Это интересно, потому что в Python 'true' (нижний регистр) вернет ошибку. - person reyPanda; 18.06.2019