本文整理汇总了C++中GMatrix::singularValueDecomposition方法的典型用法代码示例。如果您正苦于以下问题:C++ GMatrix::singularValueDecomposition方法的具体用法?C++ GMatrix::singularValueDecomposition怎么用?C++ GMatrix::singularValueDecomposition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GMatrix
的用法示例。
在下文中一共展示了GMatrix::singularValueDecomposition方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: singularValueDecomposition
void singularValueDecomposition(GArgReader& args)
{
// Load
GMatrix* pData = loadData(args.pop_string());
Holder<GMatrix> hData(pData);
// Parse options
string ufilename = "u.arff";
string sigmafilename;
string vfilename = "v.arff";
int maxIters = 100;
while(args.size() > 0)
{
if(args.if_pop("-ufilename"))
ufilename = args.pop_string();
else if(args.if_pop("-sigmafilename"))
sigmafilename = args.pop_string();
else if(args.if_pop("-vfilename"))
vfilename = args.pop_string();
else if(args.if_pop("-maxiters"))
maxIters = args.pop_uint();
else
ThrowError("Invalid option: ", args.peek());
}
GMatrix* pU;
double* pDiag;
GMatrix* pV;
pData->singularValueDecomposition(&pU, &pDiag, &pV, false, maxIters);
Holder<GMatrix> hU(pU);
ArrayHolder<double> hDiag(pDiag);
Holder<GMatrix> hV(pV);
pU->saveArff(ufilename.c_str());
pV->saveArff(vfilename.c_str());
if(sigmafilename.length() > 0)
{
GMatrix sigma(pU->rows(), pV->rows());
sigma.setAll(0.0);
size_t m = std::min(sigma.rows(), (size_t)sigma.cols());
for(size_t i = 0; i < m; i++)
sigma.row(i)[i] = pDiag[i];
sigma.saveArff(sigmafilename.c_str());
}
else
{
GVec::print(cout, 14, pDiag, std::min(pU->rows(), pV->rows()));
cout << "\n";
}
}