メインコンテンツ

MATLAB および Python の既定の数値型

既定では、MATLAB® での数値は倍精度型です。ただし、Python® では、小数部のない数値は既定で整数型です。この違いの結果として、Python 用の MATLAB エンジン API を使用して Python から MATLAB を呼び出すときに、倍精度数値を予期する MATLAB 関数に Python 変数を入力引数として渡す場合、最初に変数のデータ型の変換が必要な場合があります。

代わりに、MATLAB 内から Python 関数にデータを渡す場合は、詳細についてMATLAB での Python 数値変数の使用を参照してください。

これらの変数を MATLAB で代入するとします。

x = 4;
y = 4.0;

x および y は両方とも double データ型です。isfloat関数を使用してデータ型を確認できます。

fprintf("x is a float: %s\ny is a float: %s",string(isfloat(x)),string(isfloat(y)))
x is a float: true
y is a float: true

次は、同じ代入を Python で考えてみます。

x = 4
y = 4.0

x および y は、異なる数値データ型です。printtype を使用して x のデータ型を表示します。

print(type(x))
<type 'int'>

次に、y のデータ型を表示します。

print(type(y))
<type 'float'>

ほとんとの MATLAB 関数は、double データ型の数値の入力引数をとります。入力引数として MATLAB 関数に渡す数値は、Python データ型 float であり、Python データ型 int ではないことを確認することをお勧めします。以下の場合、Python 変数を確実に浮動小数点数にできます。

  • リテラルを浮動小数点数に変更する。たとえば、4 の代わりに「4.0」と入力します。

  • 数値を float データ型に変換する。たとえば、x = float(4) は数値を float データ型にキャストします。

  • 数値またはシーケンスから matlab.double 配列を作成する。たとえば、x = matlab.double([1,2,3,4,5]) は、MATLAB の double データ型の配列を Python 整数の list から作成します。

double データ型の入力引数を取る MATLAB 関数に整数を渡すと、Python 用の MATLAB エンジン API からエラーが返されます。例については、MatlabExecutionError: 未定義の関数を参照してください。

数値入力引数として整数を取る MATLAB 関数を呼び出すときは、Python データ型 int の入力引数を関数に渡すことができます。

参考

トピック