Измените количество размерностей и размер каждой размерности
#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.