本文整理汇总了C++中Mat::eye方法的典型用法代码示例。如果您正苦于以下问题:C++ Mat::eye方法的具体用法?C++ Mat::eye怎么用?C++ Mat::eye使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mat
的用法示例。
在下文中一共展示了Mat::eye方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: repmat
inline
bool
op_princomp::direct_princomp
(
Mat< std::complex<T> >& coeff_out,
const Mat< std::complex<T> >& in
)
{
arma_extra_debug_sigprint();
typedef typename std::complex<T> eT;
if(in.n_elem != 0)
{
// singular value decomposition
Mat<eT> U;
Col< T> s;
const Mat<eT> tmp = in - repmat(mean(in), in.n_rows, 1);
const bool svd_ok = svd(U,s,coeff_out, tmp);
if(svd_ok == false)
{
return false;
}
}
else
{
coeff_out.eye(in.n_cols, in.n_cols);
}
return true;
}
示例2: Y
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;
}
示例3: if
inline
void
Gen<T1, gen_type>::apply(Mat<typename T1::elem_type>& out) const
{
arma_extra_debug_sigprint();
// NOTE: we're assuming that the matrix has already been set to the correct size;
// this is done by either the Mat contructor or operator=()
if(is_same_type<gen_type, gen_ones_diag>::yes) { out.eye(); }
else if(is_same_type<gen_type, gen_ones_full>::yes) { out.ones(); }
else if(is_same_type<gen_type, gen_zeros >::yes) { out.zeros(); }
else if(is_same_type<gen_type, gen_randu >::yes) { out.randu(); }
else if(is_same_type<gen_type, gen_randn >::yes) { out.randn(); }
}
示例4: Y
inline
bool
op_princomp::direct_princomp
(
Mat< std::complex<typename T1::pod_type> >& coeff_out,
const Base< std::complex<typename T1::pod_type>, T1 >& X,
const typename arma_cx_only<typename T1::elem_type>::result* junk
)
{
arma_extra_debug_sigprint();
arma_ignore(junk);
typedef typename T1::pod_type T;
typedef std::complex<T> eT;
const unwrap<T1> Y( X.get_ref() );
const Mat<eT>& in = Y.M;
if(in.n_elem != 0)
{
// singular value decomposition
Mat<eT> U;
Col< T> s;
const Mat<eT> tmp = in - repmat(mean(in), in.n_rows, 1);
const bool svd_ok = svd(U,s,coeff_out, tmp);
if(svd_ok == false)
{
return false;
}
}
else
{
coeff_out.eye(in.n_cols, in.n_cols);
}
return true;
}
示例5: v
inline
bool
hess
(
Mat<typename T1::elem_type>& U,
Mat<typename T1::elem_type>& H,
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);
arma_debug_check( void_ptr(&U) == void_ptr(&H), "hess(): 'U' is an alias of 'H'" );
typedef typename T1::elem_type eT;
Col<eT> tao;
const bool status = auxlib::hess(H, X.get_ref(), tao);
if(H.n_rows == 0)
{
U.reset();
}
else
if(H.n_rows == 1)
{
U.ones(1, 1);
}
else
if(H.n_rows == 2)
{
U.eye(2, 2);
}
else
{
U.eye(size(H));
Col<eT> v;
for(uword i=0; i < H.n_rows-2; ++i)
{
// TODO: generate v in a more efficient manner;
// TODO: the .ones() operation is an overkill, as most of v is overwritten afterwards
v.ones(H.n_rows-i-1);
v(span(1, H.n_rows-i-2)) = H(span(i+2, H.n_rows-1), i);
U(span::all, span(i+1, H.n_rows-1)) -= tao(i) * (U(span::all, span(i+1, H.n_rows-1)) * v * v.t());
}
U(span::all, H.n_rows-1) = U(span::all, H.n_rows-1) * (eT(1) - tao(H.n_rows-2));
for(uword i=0; i < H.n_rows-2; ++i)
{
H(span(i+2, H.n_rows-1), i).zeros();
}
}
if(status == false)
{
U.soft_reset();
H.soft_reset();
arma_debug_warn("hess(): decomposition failed");
}
return status;
}