本文整理汇总了C++中Col类的典型用法代码示例。如果您正苦于以下问题:C++ Col类的具体用法?C++ Col怎么用?C++ Col使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Col类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: arma_extra_debug_sigprint
inline
Col<typename T1::pod_type>
eigs_sym
(
const SpBase<typename T1::elem_type,T1>& X,
const uword n_eigvals,
const char* form = "lm",
const typename T1::elem_type tol = 0.0,
const typename arma_real_only<typename T1::elem_type>::result* junk = 0
)
{
arma_extra_debug_sigprint();
arma_ignore(junk);
Mat<typename T1::elem_type> eigvec;
Col<typename T1::pod_type > eigval;
const bool status = sp_auxlib::eigs_sym(eigval, eigvec, X, n_eigvals, form, tol);
if(status == false)
{
eigval.reset();
arma_bad("eigs_sym(): failed to converge");
}
return eigval;
}
示例2: expectedColClear
void expectedColClear() {
cout << "- Compute expectedColClear() ... ";
Col<double> expected = _genColVec;
expected.clear();
save<double>("Col.clear", expected);
cout << "done." << endl;
}
示例3: find
arma_warn_unused
inline
Col<uword>
find(const SpBase<typename T1::elem_type,T1>& X, const uword k = 0)
{
arma_extra_debug_sigprint();
const SpProxy<T1> P(X.get_ref());
const uword n_rows = P.get_n_rows();
const uword n_nz = P.get_n_nonzero();
Mat<uword> tmp(n_nz,1);
uword* tmp_mem = tmp.memptr();
typename SpProxy<T1>::const_iterator_type it = P.begin();
for(uword i=0; i<n_nz; ++i)
{
const uword index = it.row() + it.col()*n_rows;
tmp_mem[i] = index;
++it;
}
Col<uword> out;
const uword count = (k == 0) ? uword(n_nz) : uword( (std::min)(n_nz, k) );
out.steal_mem_col(tmp, count);
return out;
}
示例4: expectedColReset
void expectedColReset() {
cout << "- Compute expectedColReset() ... ";
Col<double> expected = _genColVec;
expected.reset();
save<double>("Col.reset", expected);
cout << "done." << endl;
}
示例5: arma_extra_debug_sigprint
inline
typename enable_if2< is_supported_blas_type<typename T1::pod_type>::value, Col< std::complex<typename T1::pod_type> > >::result
eig_gen
(
const Base<typename T1::elem_type, T1>& expr
)
{
arma_extra_debug_sigprint();
typedef typename T1::pod_type T;
typedef typename std::complex<T> eT;
Col<eT> eigvals;
Mat<eT> eigvecs;
const bool status = auxlib::eig_gen(eigvals, eigvecs, false, expr.get_ref());
if(status == false)
{
eigvals.reset();
arma_bad("eig_gen(): decomposition failed");
}
return eigvals;
}
示例6: arma_extra_debug_sigprint
arma_warn_unused
inline
typename enable_if2< is_supported_blas_type<typename T1::pod_type>::value, Col< std::complex<typename T1::pod_type> > >::result
eig_pair
(
const Base<typename T1::elem_type, T1>& A_expr,
const Base<typename T1::elem_type, T2>& B_expr
)
{
arma_extra_debug_sigprint();
typedef typename T1::pod_type T;
Col< std::complex<T> > eigvals;
Mat< std::complex<T> > eigvecs;
const bool status = auxlib::eig_pair(eigvals, eigvecs, false, A_expr.get_ref(), B_expr.get_ref());
if(status == false)
{
eigvals.reset();
arma_stop_runtime_error("eig_pair(): decomposition failed");
}
return eigvals;
}
示例7: arma_extra_debug_sigprint
arma_warn_unused
inline
Col<typename T1::pod_type>
eigs_sym
(
const SpBase<typename T1::elem_type,T1>& X,
const uword n_eigvals,
const char* form = "lm",
const typename T1::elem_type tol = 0.0,
const typename arma_real_only<typename T1::elem_type>::result* junk = 0
)
{
arma_extra_debug_sigprint();
arma_ignore(junk);
Mat<typename T1::elem_type> eigvec;
Col<typename T1::pod_type > eigval;
const bool status = sp_auxlib::eigs_sym(eigval, eigvec, X, n_eigvals, form, tol);
if(status == false)
{
eigval.reset();
arma_stop_runtime_error("eigs_sym(): decomposition failed");
}
return eigval;
}
示例8: arma_extra_debug_sigprint
inline
void
GenEigsSolver<eT, SelectionRule, OpType>::retrieve_ritzpair()
{
arma_extra_debug_sigprint();
UpperHessenbergEigen<eT> decomp(fac_H);
Col< std::complex<eT> > evals = decomp.eigenvalues();
Mat< std::complex<eT> > evecs = decomp.eigenvectors();
SortEigenvalue< std::complex<eT>, SelectionRule > sorting(evals.memptr(), evals.n_elem);
std::vector<uword> ind = sorting.index();
// Copy the ritz values and vectors to ritz_val and ritz_vec, respectively
for(uword i = 0; i < ncv; i++)
{
ritz_val(i) = evals(ind[i]);
ritz_est(i) = evecs(ncv - 1, ind[i]);
}
for(uword i = 0; i < nev; i++)
{
ritz_vec.col(i) = evecs.col(ind[i]);
}
}
示例9: arma_extra_debug_sigprint
inline
Col< std::complex<T> >
eig_pair
(
const Base< std::complex<T>, T1>& A,
const Base< std::complex<T>, T1>& B,
const typename arma_blas_type_only< std::complex<T> >::result* junk1 = 0,
const typename arma_cx_only< std::complex<T> >::result* junk2 = 0
)
{
arma_extra_debug_sigprint();
arma_ignore(junk1);
arma_ignore(junk2);
Mat< std::complex<T> > l_eigvec;
Mat< std::complex<T> > r_eigvec;
Col< std::complex<T> > eigval;
const bool status = auxlib::eig_pair(eigval, l_eigvec, r_eigvec, A, B, 'n');
if(status == false)
{
eigval.reset();
arma_bad("eig_pair(): failed to converge");
}
return eigval;
}
示例10:
inline
bool
princomp
(
Mat<typename T1::elem_type>& coeff_out,
Mat<typename T1::elem_type>& score_out,
Col<typename T1::pod_type>& latent_out,
Col<typename T1::elem_type>& tsquared_out,
const Base<typename T1::elem_type,T1>& X,
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0
)
{
arma_extra_debug_sigprint();
arma_ignore(junk);
const bool status = op_princomp::direct_princomp(coeff_out, score_out, latent_out, tsquared_out, X);
if(status == false)
{
coeff_out.reset();
score_out.reset();
latent_out.reset();
tsquared_out.reset();
arma_bad("princomp(): failed to converge", false);
}
return status;
}
示例11: arma_extra_debug_sigprint
inline
bool
op_princomp::direct_princomp
(
Mat<typename T1::elem_type>& coeff_out,
Mat<typename T1::elem_type>& score_out,
const Base<typename T1::elem_type, T1>& X,
const typename arma_not_cx<typename T1::elem_type>::result* junk
)
{
arma_extra_debug_sigprint();
arma_ignore(junk);
typedef typename T1::elem_type eT;
const unwrap_check<T1> Y( X.get_ref(), score_out );
const Mat<eT>& in = Y.M;
const uword n_rows = in.n_rows;
const uword n_cols = in.n_cols;
if(n_rows > 1) // more than one sample
{
// subtract the mean - use score_out as temporary matrix
score_out = in; score_out.each_row() -= mean(in);
// singular value decomposition
Mat<eT> U;
Col<eT> s;
const bool svd_ok = svd(U, s, coeff_out, score_out);
if(svd_ok == false) { return false; }
// normalize the eigenvalues
s /= std::sqrt( double(n_rows - 1) );
// project the samples to the principals
score_out *= coeff_out;
if(n_rows <= n_cols) // number of samples is less than their dimensionality
{
score_out.cols(n_rows-1,n_cols-1).zeros();
Col<eT> s_tmp = zeros< Col<eT> >(n_cols);
s_tmp.rows(0,n_rows-2) = s.rows(0,n_rows-2);
s = s_tmp;
}
}
else // 0 or 1 samples
{
coeff_out.eye(n_cols, n_cols);
score_out.copy_size(in);
score_out.zeros();
}
return true;
}
示例12: arma_extra_debug_sigprint
inline
bool
op_princomp::direct_princomp
(
Mat<eT>& coeff_out,
Mat<eT>& score_out,
const Mat<eT>& in
)
{
arma_extra_debug_sigprint();
const u32 n_rows = in.n_rows;
const u32 n_cols = in.n_cols;
if(n_rows > 1) // more than one sample
{
// subtract the mean - use score_out as temporary matrix
score_out = in - repmat(mean(in), n_rows, 1);
// singular value decomposition
Mat<eT> U;
Col<eT> s;
const bool svd_ok = svd(U,s,coeff_out,score_out);
if(svd_ok == false)
{
return false;
}
// U.reset();
// normalize the eigenvalues
s /= std::sqrt( double(n_rows - 1) );
// project the samples to the principals
score_out *= coeff_out;
if(n_rows <= n_cols) // number of samples is less than their dimensionality
{
score_out.cols(n_rows-1,n_cols-1).zeros();
Col<eT> s_tmp = zeros< Col<eT> >(n_cols);
s_tmp.rows(0,n_rows-2) = s.rows(0,n_rows-2);
s = s_tmp;
}
}
else // 0 or 1 samples
{
coeff_out.eye(n_cols, n_cols);
score_out.copy_size(in);
score_out.zeros();
}
return true;
}
示例13: arma_extra_debug_sigprint
inline
bool
op_null::apply_direct(Mat<typename T1::elem_type>& out, const Base<typename T1::elem_type,T1>& expr, typename T1::pod_type tol)
{
arma_extra_debug_sigprint();
typedef typename T1::elem_type eT;
typedef typename T1::pod_type T;
arma_debug_check((tol < T(0)), "null(): tolerance must be >= 0");
const unwrap<T1> tmp(expr.get_ref());
const Mat<eT>& X = tmp.M;
Mat<eT> U;
Col< T> s;
Mat<eT> V;
const bool status = auxlib::svd_dc(U, s, V, X);
U.reset();
if(status == false) { out.reset(); return false; }
if(s.is_empty()) { out.reset(); return true; }
const uword s_n_elem = s.n_elem;
const T* s_mem = s.memptr();
// set tolerance to default if it hasn't been specified
if(tol == T(0)) { tol = (std::max)(X.n_rows, X.n_cols) * s_mem[0] * std::numeric_limits<T>::epsilon(); }
uword count = 0;
for(uword i=0; i < s_n_elem; ++i) { count += (s_mem[i] > tol) ? uword(1) : uword(0); }
if(count < X.n_cols)
{
out = V.tail_cols(X.n_cols - count);
const uword out_n_elem = out.n_elem;
eT* out_mem = out.memptr();
for(uword i=0; i<out_n_elem; ++i)
{
if(std::abs(out_mem[i]) < std::numeric_limits<T>::epsilon()) { out_mem[i] = eT(0); }
}
}
else
{
out.set_size(X.n_cols, 0);
}
return true;
}
示例14: checkCol
bool PuzzleMaker::checkCol(int num, int col, int ypos)
{
Col* toCheck = a->getCol(col);
for(int i = 0; i < 9; i++)
{
int check = toCheck->getTile(i)->getNum();
if( num == check && i != ypos)
return false;
}
return true;
}
示例15: arma_extra_debug_sigprint
inline
arma_warn_unused
uword
rank
(
const Base<typename T1::elem_type,T1>& X,
typename T1::pod_type tol = 0.0,
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0
)
{
arma_extra_debug_sigprint();
arma_ignore(junk);
typedef typename T1::pod_type T;
uword X_n_rows;
uword X_n_cols;
Col<T> s;
const bool status = auxlib::svd_dc(s, X, X_n_rows, X_n_cols);
const uword n_elem = s.n_elem;
if(status == true)
{
if( (tol == T(0)) && (n_elem > 0) )
{
tol = (std::max)(X_n_rows, X_n_cols) * eop_aux::direct_eps(max(s));
}
// count non zero valued elements in s
const T* s_mem = s.memptr();
uword count = 0;
for(uword i=0; i<n_elem; ++i)
{
if(s_mem[i] > tol) { ++count; }
}
return count;
}
else
{
arma_bad("rank(): failed to converge");
return uword(0);
}
}