Матрица от Python до MATLAB
Я работаю с Python и MATLAB прямо сейчас, и у меня есть 2D-массив на Python, который мне нужно записать в файл, а затем можно прочитать его в MATLAB в качестве матрицы. Есть идеи, как это сделать?
Спасибо!
Ответы
Ответ 1
Если вы используете 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, используя Файл → Загрузить данные. Выберите файл, и переменная arr
(матрица 3x3) будет доступна в вашей среде.
Примечание: я сделал это на scipy 0.7.0. (у scipy 0.6 есть savemat
в модуле scipy.io.mio
.) Более подробную информацию смотрите в последней документации
ОБНОВЛЕНИЕ: обновленная ссылка благодаря @gnovice.
Ответ 2
Я думаю, ars имеет самый прямой ответ для сохранения данных в файл .mat из Python (используя savemat). Чтобы добавить немного к их ответу, вы также можете программно загрузить файл .mat в MATLAB, используя функцию LOAD вместо этого вручную используя меню команд MATLAB...
Вы можете использовать либо синтаксическую форму команды LOAD:
load c:/tmp/arrdata.mat
или форму синтаксиса функции (если у вас есть путь к файлу, хранящийся в строке):
filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
Ответ 3
Я написал небольшую функцию, чтобы сделать то же самое, без необходимости numpy. Он принимает список списков и возвращает строку с матрицей в формате MATLAB.
def arrayOfArrayToMatlabString(array):
return '[' + "\n ".join(" ".join("%6g" % val for val in line) for line in array) + ']'
Напишите "myMatrix = " + arrayOfArrayToMatlabString(array)
в файл .m
, откройте его в matlab и выполните его.
Ответ 4
Я бы использовал numpy.savetxt('yourfile.mat',yourarray)
в Python
и затем yourarray = load('yourfile.mat')
в MATLAB.
Ответ 5
Вы можете написать матрицу в Python в CSV файл и прочитать ее в MATLAB с помощью csvread.
Ответ 6
Вы также можете вызвать matlab непосредственно из python:
from mlabwrap import mlab
import numpy
a = numpy.array([1,2,3])
mlab.plot(a)
Ответ 7
Панель инструментов npy-matlab может считывать двоичные файлы *.npy
в MATLAB. Файлы *.npy
можно напрямую экспортировать с помощью модуля NumPy. Из документации:
>> a = rand(5,4,3);
>> writeNPY(a, 'a.npy');
>> b = readNPY('a.npy');
>> sum(a(:)==b(:))
ans =
60
npy-matlab - это простая коллекция M файлов , доступных на GitHub, с лицензией BSD из 2 пунктов.