Я работаю с Python и MATLAB прямо сейчас, и у меня есть 2D-массив на Python, который мне нужно записать в файл, а затем можно прочитать его в MATLAB в качестве матрицы. Есть идеи, как это сделать?
Спасибо!
Если вы используете numpy/scipy, вы можете использовать функцию scipy.io.savemat
:
import numpy, scipy.io
arr = numpy.arange(10)
arr = arr.reshape((3, 3)) # 2d array of 3x3
scipy.io.savemat('c:/tmp/arrdata.mat', mdict={'arr': arr})
Теперь вы можете загрузить эти данные в MATLAB, используя File → Load Data. Выберите файл, и в вашей среде будет доступна переменная arr
(матрица 3x3).
Примечание. Я сделал это на scipy 0.7.0. (scipy 0.6 имеет savemat
в модуле scipy.io.mio
.) Подробнее см. новейшую документацию
EDIT: обновленная ссылка благодаря @gnovice.
Я думаю, ars имеет самый прямой ответ для сохранения данных в файл .mat из Python (используя savemat). Чтобы добавить немного к их ответу, вы также можете программно загрузить файл .mat в MATLAB, используя функцию LOAD вместо этого вручную используя меню команд MATLAB...
Вы можете использовать либо синтаксическую форму команды LOAD:
load c:/tmp/arrdata.mat
или форму синтаксиса функции (если у вас есть путь к файлу, хранящийся в строке):
filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
Я написал небольшую функцию, чтобы сделать то же самое, без необходимости numpy. Он принимает список списков и возвращает строку с матрицей в формате MATLAB.
def arrayOfArrayToMatlabString(array):
return '[' + "\n ".join(" ".join("%6g" % val for val in line) for line in array) + ']'
Напишите "myMatrix = " + arrayOfArrayToMatlabString(array)
в файл .m
, откройте его в matlab и выполните его.
Вы можете написать матрицу в Python в CSV файл и прочитать ее в MATLAB с помощью csvread.
Я бы использовал numpy.savetxt('yourfile.mat',yourarray)
в Python
и затем yourarray = load('yourfile.mat')
в MATLAB.
Вы также можете вызвать matlab непосредственно из python:
from mlabwrap import mlab
import numpy
a = numpy.array([1,2,3])
mlab.plot(a)
Эта библиотека npy-matlab может читать *.npy двоичные файлы в matlab. *.npy файлы могут быть напрямую экспортированы с помощью модуля numpy.