メインコンテンツ

Python への MATLAB データの引き渡し

MATLAB® で Python® 関数を呼び出すと、MATLAB の Python インターフェイスは Python 言語においてデータを最も適切に表す型に MATLAB データを変換します。MATLAB における Python データの使用の詳細については、Python 関数から返されたデータの処理を参照してください。

Python への MATLAB スカラー データの受け渡し

MATLAB では、MATLAB から Python 関数にスカラー データを渡すと、Python インターフェイスによってデータが同等の Python データ型に変換されます。

MATLAB 入力引数の型 —
スカラー値のみ

結果の Python py.

double (実数)
single (実数)

float (既定) または int

MATLAB での Python 数値変数の使用

既定では、Python インターフェイスは double 型または single 型を Python float に変換します。
Python 型ヒントに基づく整数値の場合、Python インターフェイスは double 型または single 型を Python int に変換できます。

double (複素数)
single (複素数)

complex

z = complex(1,2);
py.cmath.polar(z)
ans = 
  Python tuple with values:

    (2.23606797749979, 1.1071487177940904)

int8
uint8
int16
uint16
int32

int

-

uint32
int64
uint64

int

-

NaN

float("nan")

-

Inf

float("inf")

-

string スカラー
char ベクトル

str

MATLAB での Python str 変数の使用

string<missing>

None

py.list({string(missing),"Value"})
ans = 
  Python list with values:

    [None, 'Value']

logical

bool

-

dictionary

dict

MATLAB での Python ディクショナリの使用

struct

dict

MATLAB での Python ディクショナリの使用
tablepy.pandas.DataFrameMATLAB での Python pandas DataFrame の使用
timetablepy.pandas.DataFrameMATLAB での Python pandas DataFrame の使用
datetime

py.datetime.datetime

Python での MATLAB datetime 型の使用
duration

py.datetime.timedelta

Python での MATLAB duration 型の使用

Python オブジェクト — py.type

type

-

Python 関数専用の関数ハンドル @py.module.function

module.function

Python 関数 map への Python 関数の受け渡し

Python への MATLAB 配列データの受け渡し

MATLAB では、MATLAB 配列を Python 関数への入力として渡し、NumPy モジュールが Python 環境で使用可能な場合、Python インターフェイスは自動的に配列を Python NumPy 配列に変換します。Python 関数への入力として MATLAB 配列を渡すときに NumPy モジュールが使用可能でない場合、Python インターフェイスはベクトル入力を行列入力と同様に処理します。つまり、Python インターフェイスはこれらの入力を Python memoryview オブジェクトに変換します。(R2025a 以降)

R2025a より前: NumPy パッケージの有無にかかわらず MATLAB ベクトルを Python 関数に渡すと、Python インターフェイスはベクトルを Python array.array オブジェクトに変換します。

MATLAB 入力配列の型

結果の Python の型 (NumPy あり)

double (実数)

numpy.array(dtype=np.float64)

single (実数)

numpy.array(dtype=np.float32)

int8 (実数)

numpy.array(dtype=np.int8)

uint8 (実数)

numpy.array(dtype=np.uint8)

int16 (実数)

numpy.array(dtype=np.int16)

uint16 (実数)

numpy.array(dtype=np.uint16)

int32 (実数)

numpy.array(dtype=np.int32)

uint32 (実数)

numpy.array(dtype=np.uint32)

int64 (実数)

numpy.array(dtype=np.int64)

uint64 (実数)

numpy.array(dtype=np.uint64)

double (複素数)

numpy.array(dtype=np.complex128)

single (複素数)

numpy.array(dtype=np.complex64)

logical

numpy.array(dtype=np.bool)

char ベクトル

str

cell ベクトル

tuple

datetime 配列

numpy.datetime64 配列

duration 配列

numpy.timedelta64 配列

char 行列
string 配列

この変換はサポートされていません。

Python 言語は MATLAB 配列に格納されたデータなど、メモリ バッファーにアクセスするためのプロトコルを提供します。NumPy がインストールされていない場合、Python インターフェイスは MATLAB 配列に対してこの Python バッファー プロトコルを実装します。これにより、データをコピーすることなく、MATLAB と同じプロセスで実行されている Python コードから MATLAB 配列を直接読み取ることができます。このデータ バッファーは、Python memoryview オブジェクトに変換されます。次の例では、Python インターフェイスは、MATLAB 配列 marrmemoryview オブジェクトに変換します。この変換時にオブジェクトを array.array コンストラクターに渡します。

marr = [1,2,3];
pyarr = py.array.array('d',marr);

サポートされていない MATLAB

以下の MATLAB 型は、Python ではサポートされていません。

  • 多次元の char または cell 配列

  • スパース配列

  • struct 配列

  • categorical

  • containers.Map

  • MATLAB オブジェクト

  • matlab.metadata.Class (py.class)

参考

トピック