Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 减少MEX文件中矢量的大小_Matlab_Mex - Fatal编程技术网

Matlab 减少MEX文件中矢量的大小

Matlab 减少MEX文件中矢量的大小,matlab,mex,Matlab,Mex,给定这样一个类型化向量 matlab::data::ArrayFactory工厂; matlab::data::TypedArray BigArray=Factory.createArray({420,1}); 如何在没有(重新)分配的情况下缩小BigArray大小?我只想把它的内部长度维数设置为小于420的值。< p>假设你是capi而不是C++ API,你可以在 MxReals< /Cord>对象上使用 MxSENT< /C>或 MxSEM> 来减少它。p> int M = 420; in

给定这样一个类型化向量

matlab::data::ArrayFactory工厂;
matlab::data::TypedArray BigArray=Factory.createArray({420,1});

如何在没有(重新)分配的情况下缩小
BigArray
大小?我只想把它的内部长度维数设置为小于420的值。

< p>假设你是capi而不是C++ API,你可以在<代码> MxReals< /Cord>对象上使用<代码> MxSENT< /C>或<代码> MxSEM> <代码>来减少它。p>
int M = 420;
int N = 1;
mxArray *BigArray = mxCreateNumericMatrix(M, N, mxDOUBLE_CLASS, mxREAL);
mxSetM(BigArray, M - 4);

>假设你弹出C API而不是C++ API,你可以在 MxReals> /Cord>对象上使用<代码> MxSETN< /COD>或<代码> MXSETM< /COD>来减少它。p>

int M = 420;
int N = 1;
mxArray *BigArray = mxCreateNumericMatrix(M, N, mxDOUBLE_CLASS, mxREAL);
mxSetM(BigArray, M - 4);

MATLAB数组需要是连续的,如果不复制数据,就无法提取部分。如果您分享如何使用较小的数组,我们可能会想出解决方法。我不想触及数组的conitguos属性。如果将数组视为长度属性、已分配大小属性及其数据指针属性的组合。我只想把它的长度减少4倍。我不在乎以后是否有一些过度分配的数据。MATLAB数组需要是连续的,如果不复制数据,就无法提取部分。如果您分享如何使用较小的数组,我们可能会想出解决方法。我不想触及数组的conitguos属性。如果将数组视为长度属性、已分配大小属性及其数据指针属性的组合。我只想把它的长度减少4倍。我不在乎以后它是否有一些过度分配的数据。