Матрица от Python до MATLAB

Службы Windows не могут иметь графический интерфейсов пользователя, таким образом, Вы должны будете или избавиться от GUI или разделить Ваше приложение на две части - сервис без UI и приложение "контроллера". Если у Вас есть исходный код, преобразовывание кода не-GUI на службу легко - Visual Studio имеет тип проекта 'службы Windows', который заботится об обертывании для Вас, и существует простая пошаговая демонстрация, которая показывает Вам, как создать проект развертывания, который будет заботиться об установке.

, Если Вы выбираете второй маршрут и должны поместить часть исходного кода GUI в контроллер, контроллер и сервис могут связаться через WCF, Дистанционную работу.NET или простые сокетные соединения с протоколом, который Вы определяете сами. Если Вы используете Дистанционную работу, несомненно, будут использовать "короткий" интерфейс, который передает данные с как можно меньшим количеством вызовов метода - каждый вызов имеет изрядное количество издержек.

, Если UI довольно прост, можно быть в состоянии сойти с рук использование конфигурационных файлов для входа и файлов журнала или Windows Event Log для вывода.

42
задан Amro 15 June 2012 в 22:22
поделиться

4 ответа

Если вы используете numpy / scipy, вы можете использовать функцию scipy.io.savemat :

import numpy, scipy.io

arr = numpy.arange(9) # 1d array of 9 numbers
arr = arr.reshape((3, 3))  # 2d array of 3x3

scipy.io.savemat('c:/tmp/arrdata.mat', mdict={'arr': arr})

Теперь вы можете загрузить эти данные в MATLAB, используя File -> Загрузить данные. Выберите файл, и переменная arr (матрица 3x3) будет доступна в вашей среде.

Примечание: я сделал это в scipy 0.7.0. (scipy 0.6 имеет savemat в модуле scipy.io.mio .) Подробнее см. в последней документации

РЕДАКТИРОВАТЬ: обновленная ссылка благодаря @ gnovice .

67
ответ дан 26 November 2019 в 23:32
поделиться

I wrote a small function to do this same thing, without need for numpy. It takes a list of lists and returns a string with a MATLAB-formatted matrix.

def arrayOfArrayToMatlabString(array):
    return '[' + "\n ".join(" ".join("%6g" % val for val in line) for line in array) + ']'

Write "myMatrix = " + arrayOfArrayToMatlabString(array) to a .m file, open it in matlab, and execute it.

6
ответ дан 26 November 2019 в 23:32
поделиться

Я думаю, что ars дает наиболее простой ответ для сохранения данных в файл .mat из Python (с использованием savemat ). Чтобы немного добавить к их ответу, вы также можете загрузить файл .mat в MATLAB программно, используя функцию LOAD вместо того, чтобы делать это вручную с помощью меню окна команд MATLAB ...

Вы можете используйте форму синтаксиса команды команды LOAD:

load c:/tmp/arrdata.mat

или форму синтаксиса функции (если путь к файлу хранится в виде строки):

filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
9
ответ дан 26 November 2019 в 23:32
поделиться

Вы можете записать матрицу на Python в файл CSV и прочитать ее в MATLAB с помощью csvread.

4
ответ дан 26 November 2019 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: