Main Content

mxGetElementSize (C)

Number of bytes required to store each data element

For a complex mxArray built with the interleaved complex API, mxGetElementSize returns twice the value that the function in the separate complex API returns. For more information, see Compatibility Considerations.

C Syntax

#include "matrix.h"
size_t mxGetElementSize(const mxArray *pm);


Call mxGetElementSize to determine the number of bytes in each data element of the mxArray. For example, if the MATLAB® class of an mxArray is int16, the mxArray stores each data element as a 16-bit (2-byte) signed integer. Thus, mxGetElementSize returns 2.

mxGetElementSize is helpful when using a non-MATLAB routine to manipulate data elements. For example, the C function memcpy requires the size of the elements you intend to copy.

Input Arguments

expand all

Pointer to an mxArray, specified as const mxArray*.

Output Arguments

expand all

Number of bytes required to store one element of the specified mxArray, returned as size_t.

If pm is complex numeric, then the data in the output argument depends on which version of the C Matrix API you use.

  • If you build with the interleaved complex API (mex -R2018a option), then the return value is sizeof(std::complex<T>), where T is the data type of the array.

  • If you build with the separate complex API (mex -R2017b option), then the function returns the number of bytes for the data type of the array regardless whether the array is complex or real.

If pm points to a cell or structure, then mxGetElementSize returns the size of a pointer. The function does not return the size of all the elements in each cell or structure field.

Returns 0 on failure. The primary reason for failure is that pm points to an mxArray having an unrecognized class.


See these examples in matlabroot/extern/examples/refbook:

Compatibility Considerations

expand all

Behavior changed in R2018a

See Also


Introduced before R2006a