web-dev-qa-db-ja.com

Python=からMATLABへの行列

私はPythonとMATLABを使用しており、Pythonに2D配列があり、これをファイルに書き込んでから読み取る必要があるそれを行列としてMATLABに入れます。

ありがとう!

40
mlkyway3

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})

これで、File-> Load Dataを使用して、このデータをMATLABにロードできます。ファイルを選択すると、arr変数(3x3マトリックス)が環境で使用可能になります。

注:scipy 0.7.0でこれを行いました。 (scipy 0.6にはscipy.io.mioモジュールにsavematがあります。) 詳細については最新のドキュメント を参照してください

編集: @ gnovice のおかげでリンクを更新しました。

65
ars

ars は、Python( savemat を使用)から.matファイルにデータを保存するための最も簡単な答えを持っていると思います。回答に少しだけ追加します。MATLABコマンドを使用して手動で実行する代わりに、 [〜#〜] load [〜#〜] 関数を使用して.matファイルをプログラムでMATLABに読み込むこともできます。ウィンドウメニュー...

LOADのcommand syntax形式のいずれかを使用できます。

load c:/tmp/arrdata.mat

またはfunction syntax形式(ファイルパスが文字列に保存されている場合):

filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
9
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で開いて実行します。

6
Seth Johnson

私はおそらくPythonでnumpy.savetxt('yourfile.mat',yourarray)を使用し、次にMATLABでyourarray = load('yourfile.mat')を使用します。

Pythonから直接 matlabを呼び出す にすることもできます。

from mlabwrap import mlab
import numpy 
a = numpy.array([1,2,3])
mlab.plot(a)
4
SiggyF

ツールボックス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から入手可能 、2節のBSDライセンスがあります。

4
dingzeyuli

Pythonで行列をCSVファイルに書き込み、csvreadを使用してMATLABで読み取ることができます。

4
Jacob