H, W, R, V는 행렬이며 각 크기로 이미 초기화되어 있습니다. "베타"는 int이고, "myeps"는 실수입니다. 매트릭스 구현을 위해 나는 현재 Eigen 라이브러리를 사용했다. 그러나이 Matlab 코드를 Eigen 기반 C++ 코드로 성공적으로 변환하는 구문에 대해서는 잘 모르겠습니다.Matlab의 다음 행렬 코드를 C++의 Eigen으로 변환 할 때의 문제
matlab에 코드
H = H .* ((W'*(R.^(beta-2) .* V)) ./ max(W'*R.^(beta-1), myeps));
C++ 코드 (내가 지금까지 시도 무엇)
WH = W_ * H_;
Eigen::MatrixXf j=(W_.transpose().array()*(WH.array().pow((beta2)).cwiseProduct(V.array())));
Eigen::MatrixXf k=(W_.transpose().array()*((WH.array().pow(beta-1))));
float m=max(k.maxCoeff(),0.001);
H_ = H_.cwiseProduct(j/m);
이 코드가 맞습니까?
FYI - 이것은 NMF 알고리즘 (베타 분기에 기반한 비 음수 매트릭스 요소 분해)의 한 단계입니다.
도움을 주시면 감사하겠습니다.
그래서 무엇을 시도 했습니까? 어떤 문제가 있습니까? 구성 요소와 관련된 작업은 무엇입니까? – PeterT
지금까지이 코드가 있습니다 ... 맞습니까? WH = W_ * H_; \t \t Eigen :: MatrixXf j = (W_.transpose(). array() * (WH.array(). pow (베타 2)) cwiseProduct (V.array())))); \t \t Eigen :: MatrixXf k = (W_.transpose(). array() * ((WH.array(). pow (beta-1)))))); \t \t float m = max (k.maxCoeff(), 0.001); \t \t H_ = H_.cwiseProduct (j/m); –