Измените количество размерностей и размер каждой размерности
#include "matrix.h" int mxSetDimensions(mxArray *pm, const mwSize *dims, mwSize ndim);
mxSetDimensions
возвращает 0
на успехе, и 1
при отказе. mxSetDimensions
выделяет пространство в куче для хранения входного массива размеров. Таким образом, возможно (хотя и маловероятно), что увеличение количества размерностей может привести к тому, что в системе закончится пространство кучи.
Звонить mxSetDimensions
для изменения формы существующего mxArray
. mxSetDimensions
Как mxSetM
и mxSetN
; однако, mxSetDimensions
обеспечивает больший контроль для изменения формы mxArray
который имеет более чем две размерности.
mxSetDimensions
не выделяет и не освобождает ни одно пространство для pr
или pi
массивы. Итак, если ваш вызов на mxSetDimensions
увеличивает количество элементов в mxArray
, затем увеличьте pr
(и pi
, если он существует) массивы соответственно.
Если ваш вызов на mxSetDimensions
уменьшает количество элементов в mxArray
, тогда вы можете опционально уменьшить размер pr
и pi
массивы, использующие mxRealloc
.
MATLAB® автоматически удаляет все конечные синглтонные размерности, указанные в dims
аргумент. Для примера, если ndim
равен 5
и dims
равен [4 1 7 1 1]
, тогда получившийся массив имеет размерности 4
-by- 1
-by- 7
.