Рассмотрим следующий случай:
Основной файл Python вызывает три разные функции MATLAB - func_initialize.m
, func_1.m
и func_2.m
.
func_initialize
принимают некоторые аргументы израбочее пространство Python и создает список глобальных переменных: aa
, bb
и cc
. Эти переменные затем используются в func_1
, а func_2
.
func_initialize
структурируется следующим образом:
function func_initialize(args)
% Do some calculations using args
global aa bb cc
% Set values of aa bb and cc
end
Однако внутри скрипта python, когда я вызываю эти функции изсловарь рабочей области:
import matlab.engine
eng = matlab.engine.start_matlab()
eng.workspace['aa']
выдает следующую ошибку:
MatlabExecutionError: Файл / usr / local / MATLAB / R2019a / toolbox / matlab / external / engines / engine_api/+matlab/+internal/+engine/getVariable.m, строка 27, в getVariable Неопределенная переменная 'aa'.
Что не так с логикой программирования? Может ли быть лучший способ обмена данными между тремя файлами MATLAB?
В моем реальном коде объект Python имеет несколько методов, которые вызывают эти три функции MATLAB. Движок MATLAB запускается конструктором классов. Затем методы класса используют этот механизм MATLAB для вызова различных функций и доступа к именам переменных.