Matlab 的 svd 是怎么实现的

Matlab 的 svd 是怎么实现的,第1张

在MATLAB里打开svd的源码可以看到只有一堆注释,最后写的是该函数为built-in function。事实上,MATLAB的矩阵计算使用的是Intel的MKL库(见之前我写的一个答案如何写出比 MATLAB 更快的矩阵运算程序? - 过拟合的回答),这个库基本是现有BLAS/LAPACK实现中最快的了。svd是LAPACK中的标准运算,因此MATLAB实际是使用的MKL库来做svd。

svd得到的是A的奇异值,eig得到的是A的特征值。A'表示A的转置矩阵,A'*A的n个非负特征值的平方根叫作矩阵A的奇异值。记为σi(A)。

(1)S=svd(A)表示对矩阵A进行SVD分解,分解的结果是得到3个矩阵,如果返回值只有一个,那么可以得到A的奇异值向量。

(2)eig(A)表示求矩阵A的特征值。

MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

答案1:: 奇异值分解 (sigular value decomposition,SVD) 是另一

种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR 分解法要花

上近十倍的计算时间。[U,S,V]=svd(A),其中U和V代表二个相互正交

矩阵,而S代表一对角矩阵。 和QR分解法相同者, 原矩阵A不必为正方矩阵。

使用SVD分解法的用途是解最小平方误差法和数据压缩

答案2:: 奇异值分解是线性代数中一种重要的矩阵分解,在信号处

啊?答案3:: [U,S,V]=svd(A)奇异值分解,就是要把矩阵A分解成

U*S*V' (V'代表V转置).其中U S是正交矩阵(复数域对应为酉矩阵)

奇异值分解可以用来求矩阵的逆,数据压缩等等,不过具体的用法不

是几句话就能说清楚的。总之,奇异值分解特别重要。

:::::::::::::::::::请参考以下相关问题::::::::::::::::::::

求matlab中的矩阵的奇异值分解(SVD)程序

:::::::::::::::::::请参考以下相关问题::::::::::::::::::::

最近在翻译matlab代码为VC代码,遇到SVD奇异值分解卡住了。

:::::::::::::::::::请参考以下相关问题::::::::::::::::::::

:::::::::::::::::::请参考以下相关问题:::::::::::::::::::::::::::::::::::::::请参考以下相关问题::::::::::::::::::::


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11214537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存