主要内容

matlabPythonモジュ,ル

matlabのPython®モジュ,ルには,PythonとMATLAB®間でMATLAB配列を渡すことができるように,MATLAB数値型の配列をPython変数として表す配列クラスがあります。

matlabPythonモジュ,ル内のMATLABクラス

  • matlabのPythonパッケージをインポートして必要なコンストラクターを呼び出すことにより,Pythonコード内でMATLABの数値配列を使用できます。以下に例を示します。

    导入matlab a = matlab。Double ([[1,2,3],[4,5,6]])
    コンストラクタ,の名前は,matlab数値型を示します。Pythonから呼び出される MATLAB 関数に、入力引数として MATLAB 配列を渡すことができます。MATLAB 関数から出力引数として数値配列が返されると、この配列が Python に返されます。

  • 数値を含むオプションの入力引数初始化器を使用して,配列を初期化できます。引数初始化器は,列表元组などのPythonシ,ケンス型でなければなりません。

  • サesc escズが1行n列の入力を含むオプションの入力引数向量を使用して,配列を初期化できます。向量を使用する場合,初始化器は使用できません。

  • オプションの入力引数大小は,初期化される配列のサ。多次元配列を作成するには,複数の数値シ,ケンスを含むように初始化器を指定するか,大小が多次元になるように指定します。オプションのキ,ワ,ド引数is_complex真正的に設定することで,複素数からなるmatlab配列を作成できます。

  • Pythonでカスタム型を使用して,MATLABの双配列を初期化できます。このカスタム型は,Pythonバッファ,プロトコルを実装している必要があります。たとえば,NumPyのndarrayです。

matlabのPythonパッケ,ジのクラス

Pythonでのコンストラクタ,の呼び出し

matlab.double

matlab.double(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab.double(4)
>>> b = matlab。Double (vector=[11,22,33])
>>> c = matlab。双([[10 20],[30 40]])
>>> d = matlab。double(initializer=[[10,20],[30,40]], size=[2,2],is_complex=False)
>>> e = matlab。双(向量=范围(0,20))
>>> f = matlab。Double(向量=[x*x for x in range(0,10,2)])
> > > g = matlab.double ([[1.1 + 2.4 j, 3 + 4 j], [5.3, 6.7]], is_complex = True)

matlab.single

matlab.single(initializer=None|vector=None, size=None, is_complex=False)
> > > = matlab.single ([[1.1, 2.2, 3.3), (4.4, 5.5, 6.6)))
>>> a = matlab。single(vector=[11,22,33], is_complex=False)

matlab.int8

matlab.int8(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab.int8([[11,22,33],[44,55,66]])
>>> a = matlab.int8(vector=[11,22,33], is_complex=False)

matlab.int16

matlab.int16(initializer=None|vector=None, size=None, is_complex=False)
> > > e = matlab.int16 ([[1 + 2 j, 3 + 4 j], [5, 6]], is_complex = True)

matlab.int32

matlab.int32(初始值=None|vector=None, size=None, is_complex=False)
> > > = matlab.int32(初始值设定项=[[11,22岁,33],[44、-55、66]],大小=[2、3],is_complex = False)

matlab.int64

matlab.int64(初始值=None|vector=None, size=None, is_complex=False)
> > > = matlab.int64([[33] 11日,22日,[44、-55、66]])

matlab.uint8

matlab.uint8(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab。Uint8 ([[11,22,33],[44,55,66]])
>>> b = matlab。uint8(vector=[11, 22, 33], is_complex=False)

matlab.uint16

matlab.uint16(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab。uint16(initializer=[[11,22,33],[44,55,66]], size=[2,3], is_complex=False)
>>> b = matlab。uint16(vector=[11, 22, 33], is_complex=False)
>>> c = matlab。Uint16 ([[11,22,33],[44,55,66]])

matlab.uint32

matlab.uint32(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab。uint32(vector=[11,22,33], is_complex=False)
>>> b = matlab。Uint32 ([[11,22,33],[44,55,66]])

matlab.uint64

matlab.uint64(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab。Uint64 ([[11,22,33],[44,55,66]])
>>> b = matlab。uint64(vector=[11,22,33], is_complex=False)

matlab.logical

matlab.logical(initializer=None|vector=None, size=None)一个
>>> a = matlab。logical(initializer=[[True, False, True],[True, True, True]], size=[2,3])
>>> b = matlab。logical([[True, False, True],[True, True, True]])
>>> c = matlab。logical(vector=[True, False, True])
>>> d = matlab。逻辑的([真,假,真])

一个逻辑不能被做成复数的数组。

matlabPythonパッケ,ジ内にあるMATLABクラスのプロパティとメソッド

matlabパッケージコンストラクターで作成されたすべてのMATLAB配列は,次のプロパティとメソッドをもちます。

プロパティ

プロパティ名 説明

大小

配列の次元を表す整数からなるタプル

> > > = matlab.int16([[1, 2, 3],[4、5、6]])> > > a.size(2、3)

itemsize

配列の要素のサ▪▪ズをバ▪▪ト単位で表す整数

>>> a = matlab.int16() >>> a.itemsize 2 >>> b = matlab.int32() >>> b.itemsize

メソッド

メソッド名 目的
克隆()

元のオブジェクトの内容と同一の内容をも,新しい一意のオブジェクトを返す。

> > > = matlab.int16([[1, 2, 3],[4、5、6]])> > > b = a.clone() > > >打印(b)[[1, 2, 3],[4、5、6]]> > > b [0] [0] = 100 > > > b matlab.int16([[100, 2, 3],[4、5、6]])> > >打印(a)[[1, 2, 3],[4、5、6]]
真正的()

複素数の要素の実数部を,列優先の順序で1行n列の配列として返す。

> > > = matlab.int16 ([[1 + 10 j 2 + 20 j, 3 + 30 j],[4、5、6]],is_complex = True) > > >打印(a.real())(1、4、2、5、3、6)
图像放大()

複素数の要素の虚数部を,列優先の順序で1行n列の配列として返す。

> > > = matlab.int16 ([[1 + 10 j 2 + 20 j, 3 + 30 j],[4、5、6]],is_complex = True) > > >打印(a.imag())[0 10 0, 20日,30日0]
并且没有()

複素数でない要素を,列優先の順序で1行n列の配列として返す。

> > > = matlab.int16([[1, 2, 3],[4、5、6]])> > >打印(a.noncomplex())(1、4、2、5、3、6)
  • 重塑(dim1dim2、……dimN

  • 重塑([dim1dim2、……dimN)

次元に従って配列の形状を変更し,その結果を返す。

> > > = matlab.int16([[1, 2, 3],[4、5、6]])> > >打印(a)[[1, 2, 3],[4、5、6]]> > > a.reshape(3 2) > > >打印(a) [[1,5], [4 3], [2,6]]
toarray ()

内容から作成した標準のPythonarray.arrayオブジェクトを返す。1次元のシ,ケンスにのみ適用可能。

> > > = matlab.int16([[1, 2, 3],[4、5、6]])> > >一个[0].toarray()数组(“h”,[1,2,3])> > > b = matlab.int16 ([[1 + 10 j 2 + 20 j, 3 + 30 j],[4、5、6]],is_complex = True) > > > b.real () .toarray()数组(“h”,[1、4、2、5、3、6])
tomemoryview ()

内容から作成した標準のPythonmemoryviewオブジェクトを返す。

> > > = matlab.int16([[1, 2, 3],[4、5、6]])> > > b = a.tomemoryview () > > > b.tolist()[[1, 2, 3],[4、5、6]]> > > b.shape(2、3)

N個の要素をもMATLAB配列の作成

N個の要素をも配列を作成する場合,これはmatlab配列であるため,サズは1行N列になります。

导入matlab A = matlab.int8([1,2,3,4,5]) print(A.size) (1,5)

初期化子は,5個の数値を含むPythonリストです。Matlab配列のサ计算器ズが1行5列であることが,(1、5)というタプルで示されています。

Pythonでの多次元MATLAB配列

Pythonでは,MATLAB任意の数値型の多次元。Pythonの2 つの浮動小数点リストを使用して、2 行 5 列の double の MATLAB 配列を作成します。

导入matlab A = matlab。双([[1、2、3、4、5],[6 7 8 9 10]])打印(A) ((1.0, 2.0, 3.0, 4.0, 5.0), (6.0, 7.0, 8.0, 9.0, 10.0)]

一个大小属性は,これが2行5列の配列であることを示します。

打印(A.size) (2,5)

PythonでのMATLAB配列への@ @ンデックス付け

Pythonのリストとタプルにインデックスを付けることができるのと同様に,MATLAB配列にもインデックスを付けることができます。

导入matlab = matlab.int8([1、2、3、4、5])打印([0])(1、2、3、4、5)

Matlab配列のサescズは(1、5)であるため,一个[0](1、2、3、4、5)になります。配列にインデックスを付けて 3 を取得します。

打印([0][2])3

Pythonのンデックスは0ベスです。Pythonセッションにおいて MATLAB 配列の要素にアクセスするときは、0 ベースのインデックスを使用します。

次の例は,多次元matlab配列にescンデックスを付ける方法を示しています。

A = matlab。双([[1、2、3、4、5],[6 7 8 9 10]])打印([1][2])8.0

PythonでのMATLAB配列のスラ@ @ス

Pythonのリストとタプルをスライスできるのと同様に,MATLAB配列をスライスすることができます。

导入matlab = matlab.int8([[1、2、3、4、5]])打印([0][1:4])(2、3、4)

デタをスラスに代入することができます。次の例は,Pythonリストから配列への代入を示しています。

A = matlab.double([[1、2、3、4],[5、6、7、8]])[0]=[10年,20年,30、40]打印(A) ((10.0, 20.0, 30.0, 40.0), (5.0, 6.0, 7.0, 8.0)]

別のMATLAB配列から,または数値を含む任意のPythonイテラブルからデータを代入することができます。

次の例で示すように,スラ。

A = matlab.int8([1, 2, 3, 4, 5, 6, 7, 8))一个[0][2:4]=[30 40][0][6:8]=(70、80)打印(A)[[1、2、30、40、5、6,70,80]]

PythonでのMATLAB配列の形状変更

Pythonで重塑メソッドを使ってmatlab配列の形状を変更することができます。入力引数大小は,配列の要素数を変更しないシ,ケンスでなければなりません。重塑を使用して1行9列のmatlab配列を3行3列に変更します。

导入matlab = matlab.int8 ([1, 2, 3, 4, 5, 6, 7, 8, 9]) A.reshape((3,3))打印(A)[[1、4、7],[2、5、8],[3、6、9]]

カスタム型を使用したmatlab配列の初期化

NumPyのndarrayなどのカスタム型を使用して,PythonでMATLAB配列を初期化できます。このカスタム型は,Pythonバッファ,プロトコルを実装している必要があります。

Import matlab Import numpy.array([[1.1, 2,2, 3.3], [4.4, 5.5, 6.6]]) md = matlab.double(nf) ni32 = numpy.array([1.1, 2,2, 3.3])阵列([[1,2,3],[4、5、6]],dtype = int32) mi32 = matlab.int32 (ni32)

関連するトピック