私はPythonとMATLABを使用しており、Pythonに2D配列があり、これをファイルに書き込んでから読み取る必要があるそれを行列として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})
これで、File-> Load Dataを使用して、このデータをMATLABにロードできます。ファイルを選択すると、arr
変数(3x3マトリックス)が環境で使用可能になります。
注:scipy 0.7.0でこれを行いました。 (scipy 0.6にはscipy.io.mio
モジュールにsavemat
があります。) 詳細については最新のドキュメント を参照してください
編集: @ gnovice のおかげでリンクを更新しました。
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);
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で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)
ツールボックス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ライセンスがあります。
Pythonで行列をCSVファイルに書き込み、csvreadを使用してMATLABで読み取ることができます。