C++ 特征值:将浮点矩阵乘以布尔向量

C++ 特征值:将浮点矩阵乘以布尔向量,c++,vector,bit,eigen,C++,Vector,Bit,Eigen,我需要在Eigen中执行A*v,其中v是一个大小为p的向量,其中t一个在随机位置,而p-t为零,有关详细信息,请查看问题 我的第一个问题是:在Eigen中有什么方法可以做到这一点?若你们知道怎么做,请回答问题 我的第二个问题是:在第一个链接问题中,我通过std::vector找到了一种节省时间和内存的方法,然后通过Eigen::Map使用它会非常容易 问题是我尝试了以下操作(仅用于测试目的): 您需要强制转换到相关类型。Eigen不支持隐式类型转换,因此您必须编写: A*v.cast<fl

我需要在
Eigen
中执行
A*v
,其中
v
是一个大小为
p
的向量,其中
t
一个在随机位置,而
p-t
为零,有关详细信息,请查看问题

我的第一个问题是:在
Eigen
中有什么方法可以做到这一点?若你们知道怎么做,请回答问题

我的第二个问题是:在第一个链接问题中,我通过
std::vector
找到了一种节省时间和内存的方法,然后通过
Eigen::Map
使用它会非常容易

问题是我尝试了以下操作(仅用于测试目的):


您需要强制转换到相关类型。Eigen不支持隐式类型转换,因此您必须编写:

A*v.cast<float>();

您需要强制转换到相关类型。Eigen不支持隐式类型转换,因此您必须编写:

A*v.cast<float>();

哎哟,我错了,但是这个
cast
操作将创建一个具有相同元素但类型为
float
的临时对象吗?这听起来效率太低了!是的,你错了。这只是一个明确的演员阵容。看见From:(通常,转换是动态进行的)如果false的数量很大,最好使用手册进行循环
if(v(i)res+=a.col(i)
。哎哟,我错了,但是这个
强制转换操作将创建一个具有相同元素但类型为
float
的临时对象吗?这听起来效率非常低!是的,你错了。这只是一个显式强制转换。请参见。From:(通常,转换是动态进行的)如果false的数量很大,最好使用手册进行循环执行
if(v(i)res+=a.col(i)
A*v.cast<float>();
/usr/local/include/eigen3/Eigen/src/Core/products/CoeffBasedProduct.h:154:7: error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY