本文整理汇总了C++中arma::Mat::t方法的典型用法代码示例。如果您正苦于以下问题:C++ Mat::t方法的具体用法?C++ Mat::t怎么用?C++ Mat::t使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类arma::Mat
的用法示例。
在下文中一共展示了Mat::t方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Convolution
static void Convolution(const arma::Mat<eT>& input,
const arma::Mat<eT>& filter,
arma::Mat<eT>& output)
{
// Use the naive convolution in case the filter isn't two dimensional or the
// filter is bigger than the input.
if (filter.n_rows > input.n_rows || filter.n_cols > input.n_cols ||
filter.n_rows == 1 || filter.n_cols == 1)
{
NaiveConvolution<BorderMode>::Convolution(input, filter, output);
}
else
{
arma::Mat<eT> U, V, subOutput;
arma::Col<eT> s;
arma::svd_econ(U, s, V, filter);
// Rank approximation using the singular values calculated with singular
// value decomposition of dense filter matrix.
const size_t rank = arma::sum(s > (s.n_elem * arma::max(s) *
arma::datum::eps));
// Test for separability based on the rank of the kernel and take
// advantage of the low rank.
if (rank * (filter.n_rows + filter.n_cols) < filter.n_elem)
{
arma::Mat<eT> subFilter = V.unsafe_col(0) * s(0);
NaiveConvolution<BorderMode>::Convolution(input, subFilter, subOutput);
subOutput = subOutput.t();
NaiveConvolution<BorderMode>::Convolution(subOutput, U.unsafe_col(0),
output);
for (size_t r = 1; r < rank; r++)
{
subFilter = V.unsafe_col(r) * s(r);
NaiveConvolution<BorderMode>::Convolution(input, subFilter,
subOutput);
arma::Mat<eT> temp;
subOutput = subOutput.t();
NaiveConvolution<BorderMode>::Convolution(subOutput, U.unsafe_col(r),
temp);
output += temp;
}
output = output.t();
}
else
{
FFTConvolution<BorderMode>::Convolution(input, filter, output);
}
}
}
示例2: move
arma::Mat<double> make_covariance_matrix(const arma::Mat<double>& data) {
return std::move( (data.t()*data) * (1./(data.n_rows-1)) );
}