Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.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中未正确设置为C++;转换 我用MATLAB编码器将MATLAB函数转换成C++。输入为:Infx1的一维数组,matlab函数的输出为二维数组。我使用_C++_Arrays_Matlab_Matlab Coder - Fatal编程技术网

二维数组在matlab中未正确设置为C++;转换 我用MATLAB编码器将MATLAB函数转换成C++。输入为:Infx1的一维数组,matlab函数的输出为二维数组。我使用

二维数组在matlab中未正确设置为C++;转换 我用MATLAB编码器将MATLAB函数转换成C++。输入为:Infx1的一维数组,matlab函数的输出为二维数组。我使用,c++,arrays,matlab,matlab-coder,C++,Arrays,Matlab,Matlab Coder,在我的主循环中,我维护一个变量count,该变量从1到500不等,在循环结束之前,我使用 result(count,:) = blocks; 其中块是在每个循环中计算的18x1向量 在转换后的C++文件中,我希望代码>结果>代码>为二维数组。但它恰好是一个向量,其输出由 for (loop_ub = 0; loop_ub < 18; loop_ub++) { result[(count + 500 * loop_ub) - 1] = blocks[loop_ub];

在我的主循环中,我维护一个变量
count
,该变量从1到500不等,在循环结束之前,我使用

result(count,:) = blocks;
其中块是在每个循环中计算的18x1向量

在转换后的C++文件中,我希望<>代码>结果>代码>为二维数组。但它恰好是一个向量,其输出由

for (loop_ub = 0; loop_ub < 18; loop_ub++) {
           result[(count + 500 * loop_ub) - 1] = blocks[loop_ub];
        }
我不明白这不是二维阵列的原因。非常感谢您的帮助


谢谢

所有的记忆最终都是平面(一维)的,当你用这种方式解释它时,你通常会得到最好的表现。在这种情况下,一次分配就可以了(大小为500*18*sizeof(real_T)),因此matlab使用它-由于空间局部性,您将获得更好的缓存性能。代码生成器可以将分配包装在多维数组类型中(例如,请参见),但这掩盖了每一行在内存中实际上是连续的这一事实,这是一个需要了解的有用事实。否则,例如,不清楚是否可以使用单个memset来初始化数组

for (loop_ub = 0; loop_ub < 18; loop_ub++) {
           result[(count + 500 * loop_ub) - 1] = blocks[loop_ub];
        }
memset(&result[0], 0, 9000U * sizeof(real_T));