如何在本地区进行协同操作
How to do colwise operations in Eigen
我经常这样做:
auto f_conj = f.conjugate(); //f is a MatrixXcf, so is C;
for(n=0;n<X.cols();++n)
C.col(n) = X.col(n).cwiseProduct(f_conj);
难道我不能做像
这样的事情吗?C.colwise() = X.colwise().cwiseProduct(f_conj)
?
你真正做的是对角积,所以我建议你使用下面的表达式:
C = f.conjugate().asDiagonal() * X;
如果要使用colwise()表达式,则不要将其放在左侧:
C = X.colwise().cwiseProduct(f.conjugate());
此外,让我警告您关于auto关键字的使用。这里,我要强调f_conj
不是VectorXcf
,而是VectorXcf
的共轭表达式。所以用f_conj
或f.conjugate()
是完全一样的。由于将两个复合体或一个复合体与一个共轭复合体相乘的成本相同,因此在这种情况下可以使用auto关键字。但是,如果f_conj
是例如:auto f_conj = (f+g).conjugate()
,那么f+g
将在for循环中被重新计算多次。执行(f+g).conjugate().asDiagonal() * X
是完全可以的,因为Eigen知道该怎么做。
相关文章:
- 从C++本机插件更新Vector3数组
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 重载操作程序时出错>>用于类中的字符串 memebr
- GCC本机矩阵运算库
- 无法链接 CMake 中的本地库
- 对字符串进行位操作
- 我可以在 C++ 中的函数体之外进行操作吗?
- MPI突然停止了对多个核心的操作
- VC++本机单元测试,找不到调试符号
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 操作方法:将 boost::endian 缓冲区类型转换回本机格式
- 将互操作 HwndSource 包装在 c++/cli 中,以用于本机 c++/MFC 应用程序
- 在本例中,c++编译器在向函数传递参数时所做的操作
- 混合代码(本机代码、托管代码):它(技术上)如何互操作
- 本机C++程序在使用 C++/CLI 和 C# 互操作 DLL 启动时崩溃
- 位图按位操作的位集或本机数据类型
- 在进行托管到本机的互操作时,操作系统加载器锁定
- 如何在本地区进行协同操作
- 在本机互操作中控制WPF
- 矩阵乘以矢量操作与原始缓冲区在本征