从Python到MATLAB的矩阵

42 python import file-io matlab matrix

我现在正在使用Python和MATLAB,我在Python中有一个2D数组,我需要将其写入文件,然后能够将其作为矩阵读入MATLAB.关于如何做到这一点的任何想法?

谢谢!

ars*_*ars 67

如果你使用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})
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用文件 - >加载数据将此数据加载到MATLAB中.选择文件arr,您的环境中将可以使用变量(3x3矩阵).

注意:我在scipy 0.7.0上做了这个.(scipy 0.6 savematscipy.io.mio模块中有.)有关更多详细信息,请参阅最新文档

编辑:感谢@gnovice更新链接.


gno*_*ice 9

我认为ars有最直接的答案,可以将数据保存到Python的.mat文件中(使用savemat).要简单地添加一些答案,您还可以使用LOAD函数以编程方式将.mat文件加载到MATLAB中,而不是使用MATLAB命令窗口菜单手动完成.

您可以使用LOAD 的命令语法形式:

load c:/tmp/arrdata.mat
Run Code Online (Sandbox Code Playgroud)

函数语法形式(如果您将文件路径存储在字符串中):

filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
Run Code Online (Sandbox Code Playgroud)


Set*_*son 6

我写了一个小函数来做同样的事情,而不需要numpy.它采用列表列表并返回带有MATLAB格式矩阵的字符串.

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

"myMatrix = " + arrayOfArrayToMatlabString(array)一个.m文件,在MATLAB打开它,执行它.


小智 5

我可能会numpy.savetxt('yourfile.mat',yourarray)在Python中然后yourarray = load('yourfile.mat')在MATLAB中使用。


Jac*_*cob 4

您可以将 Python 中的矩阵写入 CSV 文件,并使用 csvread 在 MATLAB 中读取它。