如何解决将 float ** 映射到 Eigen::MatrixXf
请问如何将 float** 映射到 Eigen::MatrixXf?
这个功能是脑电信号的经验模式分解。问题是我无法将 EMD 的输出映射到 eigen::MatrixXf
因为它是 float**
std::vector <Eigen::MatrixXf> EMD (Eigen::MatrixXd array,int order,int iterations,int locality) {
std::vector <Eigen::MatrixXf> IMFs;
emdData IMF;
for (int i = 0; i < array.rows(); i++) {
Eigen::MatrixXd Kanals = array.row(i);
const float* signal = (float*)Kanals.data();
emdCreate(&IMF,Kanals.cols(),order,iterations,locality);
emdDecompose(&IMF,signal);
float** IMFd = IMF.imfs;
//int arrSize = sizeof(IMFd) / sizeof(IMFd[0][0]);
//std::cout << "Its Size: " << IMF.size << " arrSize: " << arrSize << " Min: " << IMF.minSize << " Max: " << IMF.maxSize<<"\n";
Eigen::MatrixXf Out_IMF = Eigen::Map <Eigen::MatrixXf> (*IMFd,IMF.minSize,IMF.maxSize);
IMFs.push_back(Out_IMF);
}
return IMFs;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。