二维数组在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));