Я работаю с Python и MATLAB прямо сейчас, и у меня есть 2D-массив на Python, который мне нужно записать в файл, а затем прочитать его в MATLAB в качестве матрицы. Есть идеи, как это сделать?Матрица от Python до MATLAB
Спасибо!
Я работаю с Python и MATLAB прямо сейчас, и у меня есть 2D-массив на Python, который мне нужно записать в файл, а затем прочитать его в MATLAB в качестве матрицы. Есть идеи, как это сделать?Матрица от Python до MATLAB
Спасибо!
Вы можете написать матрицу в Python в CSV-файл и прочитать ее в MATLAB с помощью csvread.
Я попытался включить ссылку на csvread (http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/csvread.html&http://www. google.com/search?hl=ru&rlz=1C1GGLS_en-USUS294US304&q=matlab+csvread&aq=f&oq=&aqi=) в ответе. – Jacob
Если вы используете 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
модуле.) См latest documentation for more detail
EDIT: обновлена ссылка благодаря @gnovice.
Эта ссылка, похоже, не работает для меня. Возможно, это будет работать лучше: http: //docs.scipy.org/doc/scipy/reference/generated/scipy.io.savemat.html – gnovice
Ссылка работает отлично на моем конце. Но ваша ссылка лучше - это для последних документов (0,7+), тогда как у меня было 0,6, следовательно, у другого модуля (у меня есть старая закладка). Спасибо, гновиц! – ars
Рад помочь! =) – gnovice
Я написал небольшую функцию, чтобы сделать то же самое, без необходимости numpy. Он отображает список списков и возвращает строку с матрицей в формате MATLAB.
def arrayOfArrayToMatlabString(array):
return '[' + "\n ".join(" ".join("%6g" % val for val in line) for line in array) + ']'
Написать "myMatrix = " + arrayOfArrayToMatlabString(array)
в .m
файл, откройте его в MATLAB, и выполнить его.
Я думаю, что ars имеет самый прямой ответ для сохранения данных в файл .mat из Python (с использованием savemat). Чтобы добавить немного к их ответу, вы также можете загрузить файл .mat в MATLAB программно, используя функцию LOAD, вместо того, чтобы делать это вручную, используя меню командного окна MATLAB ...
Вы можете использовать команду синтаксис формы НАГРУЗКИ:
load c:/tmp/arrdata.mat
или форма синтаксис функции (если у вас есть путь к файлу, хранящийся в строке):
filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
+1; Ухоженная! Я не использую Matlab достаточно и всегда оказываюсь в меню, вместо того, чтобы просто искать правильную команду. Загрузка показалась бы очевидной. Гм. :-) – ars
Вы можете также call matlab непосредственно из питона:
from mlabwrap import mlab
import numpy
a = numpy.array([1,2,3])
mlab.plot(a)
я бы, вероятно, использовать numpy.savetxt('yourfile.mat',yourarray)
в Python , а затем yourarray = load('yourfile.mat')
в среде MATLAB.
Эта библиотека npy-matlab может читать * .npy двоичные файлы в matlab. * .npy файлы могут быть напрямую экспортированы с помощью модуля numpy.
спасибо всем за замечательные советы! Это сработало! – 2009-07-08 19:30:37