将 Eigen::matrixXd 转换为 Double
conversion of Eigen::matrixXd to Double
我一直在尝试在特征库的帮助下重建提供给C++编写的RBM程序的输入数据。但是为了将重建矩阵的矩阵元素保持在某个特定范围内,我需要对这些元素应用一个 sigmoid 函数。当我这样做时,我收到转换错误,我不知道如何解决它。
这是我在头文件中计算的 Sigmoid 函数:
double sigmoid(double x)
{
return 1.0 / (1.0 + exp(-x));
}
以下是我计算重建的方式:
MatrixXd V;
double well[36];
Map<MatrixXd>( well, V.rows(), V.cols() ) = V;
V = sigmoid(H * result3Eigen.transpose() + onesmat*result2Eigen.transpose());
最后,我在编译代码时收到的错误消息:
error C2664:'utils::sigmoid':cannot convert parameter 1 from 'Eigen::MatrixXd'
to 'double'
感谢您在解决问题时提供的任何提示。
如果要将函数应用于特征矩阵的每个元素,可以使用unaryExpr
函数:
V = my_matrix.unaryExpr(&sigmoid);
这将在特征矩阵的每个元素上运行sigmoid
函数my_matrix
,然后返回另一个矩阵作为结果。
相关文章:
- C++在数学计算中将double转换为int
- 错误:无法将"<lambda(double)>"转换为"double(*)(double)"
- 如何将 Java double[][] 转换为 C++ <vector<vector>> JNI?
- 将 std::vector<boost::optional<double>> 转换为 std::vector<double>
- 将 double* 转换为 std::vector<double> (C++)
- 无法将复数<double>转换为双精度
- "double(*)(string, double, double)"尝试传递函数C++时"double"转换错误
- 从 double* 转换为 int 会失去精度
- 从'double'转换为'int'需要缩小转换范围
- 错误:无法将参数“1”的“double*”转换为“double”,错误:数组下标的类型“double[double]”无
- C 编译器从Double转换为INT
- 将“ double*”转换为“ boost :: Any*”
- 警告 C4244:'argument':从 'double' 转换为"浮点数",可能会丢失数据 - C++
- 当我使用模板时,编译器无法将函数的返回类型从 double 转换为 int
- 将double转换为LSBF(小Endian)十六进制字符串
- JNI在将Java double转换为jdouble时出现问题
- 无法将double转换为字符串
- 警告 C4244:"参数":从"double"转换为"int",可能会丢失数据
- C++无法将'long double'转换为'long double*',因为参数'1'为"long
- 在C++中,将double转换为long的类型返回了不正确的值