Main Content

Default Numeric Types in MATLAB and Python

MATLAB® stores all numeric values as double-precision floating point numbers by default. In contrast, Python® stores some numbers as integers by default. Because of this difference, you might pass integers as input arguments to MATLAB functions that expect double-precision numbers.

Consider these variable assignments in MATLAB:

x = 4;
y = 4.0;

Both x and y are of data type double. Now consider the same assignments in Python:

x = 4
y = 4.0

x and y are of different numeric data types.

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

Most MATLAB functions take numeric input arguments of data type double. The best practice is to ensure that numbers you pass as input arguments to MATLAB functions are of Python data type float, not Python data type int. You can ensure that Python variables are floating point numbers if you:

  • Make literals floating point numbers. For example, type 4.0 instead of 4.

  • Convert to data type float. For example, x = float(4) casts the number to data type float.

  • Create a matlab.double array from a number or sequence. For example, x = matlab.double([1,2,3,4,5]) creates an array of MATLAB data type double from a list of Python integers.

When you pass an integer to a MATLAB function that takes an input argument of data type double, the engine raises an error. See MatlabExecutionError: Undefined Function for an example.

When you call a MATLAB function that does take integers as numeric input arguments, you can pass input arguments of Python data type int to the function.