5

変数がありますexon = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]]]。次のようなマットファイルを作成したいと思います

>>

exon : [3*2 double] [2*2 double]

Pythonコードを使用して同じことをすると、エラーメッセージが表示されます。ここに私のpythonコードがあります

import scipy.io
exon  = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]]]
scipy.io.savemat('/tmp/out.mat', mdict={'exon': (exon[0], exon[1])})

誰でも同じことを提案できるのは素晴らしいことです。よろしくお願いします Vipin TS

4

2 に答える 2

10

Matlab で同じ変数名にリンクされた 2 つの異なる配列が必要なようです。それは不可能です。MATLAB では、他の配列を含むセル配列または構造体を持つことができますが、単一の変数に割り当てられた配列のタプルだけを持つことはできません (これは mdict={'exon': (exon[0], exon 1 )) - Matlab にはタプルの概念はありません。

また、オブジェクトを numpy 配列にする必要があります。

import numpy as np
exon = [ np.array([[1, 2], [3, 4], [5, 6]]), np.array([[7, 8], [9, 10]]) ]

さまざまなMatlabタイプを保存する方法の詳細が記載されたscipyドキュメントがここにありますが、セル配列が必要であると仮定します:

obj_arr = np.zeros((2,), dtype=np.object)
obj_arr[0] = exon[0]
obj_arr[1] = exon[1]
scipy.io.savemat('/tmp/out.mat', mdict={'exon': obj_arr})

これにより、matlab で次の結果が得られます。

コードの結果は matlab になります

またはおそらく(テストされていません):

obj_arr = np.array(exon, dtype=np.object)
于 2009-10-29T14:22:37.957 に答える
1

Sage はオープン ソースの数学ソフトウェアで、Python 構文と Python インタープリターを Matlab、Octave、Mathematica などの他のツールと一緒にバンドルすることを目的としています。

たぶん、あなたはそれを見たいと思うでしょう:

于 2009-10-06T16:02:39.000 に答える