void CPDNRigid<Scalar, Dim>::initialization() { paras_.W_ = MatrixType<Scalar, Dim>::Matrix::Zero(this->M_, Dim); Scalar sigma_sum = this->M_*(this->data_.transpose()*this->data_).trace() + this->N_*(this->model_.transpose()*this->model_).trace() - 2*(this->data_.colwise().sum())*(this->model_.colwise().sum()).transpose(); paras_.sigma2_ = sigma_sum / (Dim*this->N_*this->M_); this->initTransform(); constructG(); if (this->lr_) lr_approximate<Scalar, Dim>(G_, Q_, S_, this->K_, this->lr_maxitr_); }
void CPDNRigid<T, D>::initialization() { _paras._W = TMatrix::Zero(_M, D); T sigma_sum = _M*(_data.transpose()*_data).trace() + _N*(_model.transpose()*_model).trace() - 2*(_data.colwise().sum())*(_model.colwise().sum()).transpose(); _paras._sigma2 = sigma_sum / (D*_N*_M); initTransform(); constructG(); if (_lr) lr_approximate<T, D>(_G, _Q, _S, _K, _lr_maxitr); }
BallSearch(Params<Complex> params_) :params(params_), G(constructG(params)), g(~G), m_foundBigBall(false) {}