Как создать и получить доступ к глобальным переменным в рабочей области MATLAB при использовании Python - PullRequest
0 голосов
/ 03 октября 2019

Рассмотрим следующий случай:

Основной файл 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 для вызова различных функций и доступа к именам переменных.

...