C++ 有没有办法将std::函数应用于特征矩阵的每个元素?
我有一个Eigen::MatrixXd,我想通过应用函数组件来修改它的所有元素。例如:C++ 有没有办法将std::函数应用于特征矩阵的每个元素?,c++,eigen,C++,Eigen,我有一个Eigen::MatrixXd,我想通过应用函数组件来修改它的所有元素。例如: MatrixXd m = ...; std::function<double(double)> f = ... m1 = m.apply(f); MatrixXd m=。。。; 函数f=。。。 m1=m.apply(f); 有什么方法可以达到这个效果吗?`你可以用蛮力的方式来达到这个效果,也就是说在一个双循环中: for (int j1; j1 < m.rows(); j1++){
MatrixXd m = ...;
std::function<double(double)> f = ...
m1 = m.apply(f);
MatrixXd m=。。。;
函数f=。。。
m1=m.apply(f);
有什么方法可以达到这个效果吗?`你可以用蛮力的方式来达到这个效果,也就是说在一个双循环中:
for (int j1; j1 < m.rows(); j1++){
for (int j2; j2 < m.cols(); j2++){
m(j1, j2) = f(m(j1, j2));
}
}
(int j1;j1{
对于(int j2;j2
您可以始终以蛮力方式进行操作,这意味着在双循环中:
for (int j1; j1 < m.rows(); j1++){
for (int j2; j2 < m.cols(); j2++){
m(j1, j2) = f(m(j1, j2));
}
}
(int j1;j1{
对于(int j2;j2模板成员函数使用调用运算符(函数指针、functor、lambda、std::function
)获取任何内容,并将其应用于矩阵的每个元素。请记住,矩阵不能使用别名
#include <functional>
#include <iostream>
#include <Eigen/Core>
double square(double x)
{
return x*x;
}
int main()
{
Eigen::MatrixXd m = Eigen::MatrixXd::Random(2,2);
std::cout << m << "\n";
std::function<double(double)> func = square;
m = m.unaryExpr(func);
std::cout << m << "\n";
}
#包括
#包括
#包括
双正方形(双x)
{
返回x*x;
}
int main()
{
本征::矩阵XXD m=本征::矩阵XXD::随机(2,2);
std::cout模板成员函数使用调用运算符(函数指针、functor、lambda、std::function
)获取任何内容,并将其应用于矩阵的每个元素。请记住,矩阵不能使用别名
#include <functional>
#include <iostream>
#include <Eigen/Core>
double square(double x)
{
return x*x;
}
int main()
{
Eigen::MatrixXd m = Eigen::MatrixXd::Random(2,2);
std::cout << m << "\n";
std::function<double(double)> func = square;
m = m.unaryExpr(func);
std::cout << m << "\n";
}
#包括
#包括
#包括
双正方形(双x)
{
返回x*x;
}
int main()
{
本征::矩阵XXD m=本征::矩阵XXD::随机(2,2);
标准::cout