这是我的第一篇文章,希望我能达到标准...
为了提高效率,我正在将最初用 MATLAB 编写的程序翻译成 c++(我对此很陌生)。我实际正在处理的这段代码恢复了对一个 vector (矩阵)的各种索引的一步访问。例如,如果 M1 是一个大小为 10x15 的矩阵,程序将定义一个新矩阵,如下所示:
idxs1 = [1 2 3];
idxs2 = [1 2 3 4 5];
M2 = M1 (idxs1 , idxs2);
结果 M2 为大小为 3x5 的矩阵。现在,我猜想 MATLAB 实际上所做的是通过索引给定的 M1 的各个位置一一访问,然后通过重新排列获取的许多内容来构造 M2,所有这些都非常有效。
我的问题是,如何在 c++ 中重现这种机制?据我所知,没有直接的方法可以连续访问数组的各种索引,而且我使用的 for
循环似乎相当麻烦。也许有一些聪明的方法可以在不要求“太多”处理器时间的情况下做到这一点?此外,出于教育目的,如果有人可以解释执行此类操作时 MATLAB 实际做了什么,我将不胜感激。
提前致谢,对于给您带来的不便,我们深表歉意!
P.S:为了防止问题增加任何内容,我正在使用 MEX 文件来链接两种语言。 P.S2: 顺便说一句,我发现了一些相关的问题,但是关于其他语言:
最佳答案
“Armadillo 是一个高质量的 C++ 线性代数库,旨在实现速度和易用性之间的良好平衡
可用于直接在 C++ 中开发算法,或将研究代码快速转换为生产环境;语法 (API) 故意类似于 Matlab"
关于c++ - 如何在 C++ 中有效地访问数组的多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34585538/