主要内容

MATLABPython 中的默认数值类型

默认情况下,MATLAB® 中的数值具有双精度类型。然而,在 Python® 中,没有小数部分的数值默认为具有整数类型。由于此差异,当使用 MATLAB Engine API for Python 从 Python 调用 MATLAB 时,如果您将 Python 变量作为输入参量传递给应接受双精度数的 MATLAB 函数,您可能需要先转换变量的数据类型。

如果您要从 MATLAB 内将数据传递给 Python 函数,请参阅在 MATLAB 中使用 Python 数值变量了解详细信息。

以 MATLAB 中的以下变量赋值为例。

x = 4;
y = 4.0;

xy 的数据类型均为 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

xy 具有不同的数值数据类型。使用 printtype 查看 x 的数据类型。

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

现在查看 y 的数据类型。

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

大多数 MATLAB 函数接受数据类型为 double 的数值输入参量。最佳做法是确保作为输入参量传递给 MATLAB 函数的数值具有 Python 数据类型 float,而不是 Python 数据类型 int。如果您要进行以下操作,请确保 Python 变量是浮点数:

  • 将字面值更改为浮点数。例如,键入 4.0,而不是 4

  • 将数字转换为数据类型 float。例如,x = float(4) 将数值转换为数据类型 float

  • 从数值或序列创建 matlab.double 数组。例如,x = matlab.double([1,2,3,4,5]) 从 Python 整数 list 创建具有 double 数据类型的 MATLAB 数组。

当您将整数传递给接受数据类型为 double 的输入参量的 MATLAB 函数时,MATLAB Engine API for Python 会返回错误。有关示例,请参阅 MatlabExecutionError: Undefined Function

当调用接受整数作为数值输入参量的 MATLAB 函数时,可以将具有 Python 数据类型 int 的输入参量传递给该函数。

另请参阅

主题