摘要:本文主要向大家介绍了 C/C++知识点之SVD分解的c++代码(Eigen 库),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了 C/C++知识点之SVD分解的c++代码(Eigen 库),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
使用Eigen 库:进行svd分解,形如 A = U * S * VT。
Eigen::JacobiSVD< _Matrix_Type_ > svd(a ,Eigen::ComputeThinU | Eigen::ComputeThinV);
// EigenTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
#include
//using Eigen::MatrixXf;
using namespace Eigen;
using namespace Eigen::internal;
using namespace Eigen::Architecture;
int main()
{
Matrix3f A;
A(0,0)=1,A(0,1)=0,A(0,2)=1;
A(1,0)=0,A(1,1)=1,A(1,2)=1;
A(2,0)=0,A(2,1)=0,A(2,2)=0;
JacobiSVD
Matrix3f V = svd.matrixV(), U = svd.matrixU();
Matrix3f S = U.inverse() * A * V.transpose().inverse(); // S = U^-1 * A * VT * -1
std::cout<<"A :\n"<<A<<std::endl;
std::cout<<"U :\n"<<U<<std::endl;
std::cout<<"S :\n"<<S<<std::endl;
std::cout<<"V :\n"<<V<<std::endl;
std::cout<<"U * S * VT :\n"<<U * S * V.transpose()<<std::endl;
system("pause");
return 0;
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号