Armadillo C :如何使用来自另一个矩阵的多个元素(特别是在立方体结构中)修改矩阵的多个数组元素
Armadillo C++: How to modify multiple array elements of a matrix using multiple elements from another matrix, specifically in a cube structure?
在matlab中,如果我有两个3x3矩阵A和b,并且要将B的最后两列复制到A的前两个列中,则使用以下语法:
A(:,1:2) = B(:,2:3)
我正在尝试使用C 中的Armadillo完成相同的动作,特别是用于立方体结构。在Armadillo中,如果我有两个Cubes A和B带9个切片(每个切片为3x3矩阵),我假设我会使用以下来执行相同的列元元素更新:
A(span(0,2),span(0,1),span(i)) = B(span(0,2),span(1,2),span(i))
其中'i'只是切片索引。该语法基于Armadillo语法指南。
代码没有错误并运行;立方体切片只是没有更新。我是否在这里使用正确的武术语法,这是执行这些操作的最有效方法吗?
如果您想要一个简单的副本/粘贴(而不是立方体矩阵的换档/旋转),则可以使用此语法来执行技巧:
#include <armadillo>
int main (int argc, char* argv[])
{
size_t num_slices = 9;
arma::icube A (3, 3, num_slices);
arma::icube B (3, 3, num_slices);
A.zeros();
B.randn();
A.print("Cube A :n");
B.print("Cube B :n");
for (int s = 0; s < num_slices; ++s)
A.slice(s)(arma::span::all, arma::span(0, 1)) =
B.slice(s)(arma::span::all, arma::span(1, 2));
A.print("Cube A :n");
B.print("Cube B :n");
return 0;
}
相关文章:
- 我刚刚安装了Visual Studio,遇到了一些错误,特别是WindowsSDKDir属性未定义.可能找不到某些生成工
- 平均循环值(特别是 HSL 配色方案中的色调)
- 如何通过函数参数使用 fstream(特别是 ofstream)
- 使用 C/C++ 以外的语言构建共享库,特别是 prolog
- 是否提供了在linux上交叉编译gtkmm(特别是v3)windows库/应用程序的说明
- GCC 地址清理器 - 将库功能列入黑名单(特别是 boost::test)
- std::bind通常适用于仅移动类型,特别是std::unique_ptr
- 当我可以将RNG传递给分发时,为什么要使用variate_generator?(特别是C++和Boost)
- 了解函数特征模板的工作原理.特别是,指向成员函数的指针是怎么处理的
- 如何在C++中使用%d,特别是在DrawText()中
- 如何在SWIG包装C++代码中向目标语言(特别是Python)添加替代构造函数
- 如何将c合并到c中(特别是lex)
- C++-占位符是如何工作的(特别是在boost::type_erasure中)
- 如何在xml树中反向行走节点,特别是libxml/c++
- 当您泄漏"device"和"device context"时会发生什么 - 特别是 d3d?
- 转换到另一个库(特别是c++)
- 我迷失在提升库中(特别是boost_program_options)
- msys/MinGW,即使安装了也找不到libpng,试图编译xpdf(特别是pdftopng)
- 并发与并行——特别是在c++中
- 矢量化/优化循环,用于宽寄存器(特别是Xeon Phi)的未对齐数据访问