svdsketch
语法
说明
示例
输入参数
输出参量
提示
如果您事先不知道用
svds
指定什么秩但知道 SVD 的逼近应满足什么容差,请使用svdsketch
。svds
计算 SVD 的最佳可能秩 k 逼近(使用默认"largest"
方法)。svdsketch
无法保证其秩 k 逼近是最好的,这只说明它相对于svds
的速度优势。
算法
svdsketch
应用一个容差来形成输入矩阵 A
的低秩矩阵逼近 。此低秩逼近称为矩阵草图。矩阵草图仅保留 A
中的重要特征,而滤除不必要的信息。矩阵草图的相对逼近误差 apxErr
旨在满足指定的容差 tol
:
svdsketch
形成矩阵草图所遵循的过程如下:
svdsketch
以迭代方式形成矩阵草图,每次迭代向 Q 添加新列,向 B 添加新行。通过使用随机采样矩阵从A
中提取特征来创建新列和行。您可以使用BlockSize
名称-值对组控制每次迭代中添加的列数和行数。在每次迭代期间,
svdsketch
使用幂迭代来改进 Q 中新列的正交性。您可以使用NumPowerIterations
名称-值对组来调整幂迭代的次数。当 Q 中的列数和 B 中的行数达到
MaxSubspaceDimension
的指定值、迭代次数达到MaxIterations
或相对逼近误差收敛 (apxErr <= tol
) 时,形成矩阵草图的迭代停止。如果
apxErr
中的衰减不足,为了提高收敛速度,svdsketch
可能会在各迭代之间增大BlockSize
的指定初始值。
在形成矩阵草图 后,svdsketch
通过 [U1,S,V] = svd(B,'econ')
计算矩阵草图的奇异值分解 (SVD),使得
如果 svdsketch
能够根据指定的容差滤除 A
的某些特征,则与对 A
执行完整 SVD 相比,得到的 SVD 因子包含更少的奇异值和奇异向量。
参考
[1] Yu, Wenjian, Yu Gu, and Yaohang Li. “Efficient Randomized Algorithms for the Fixed-Precision Low-Rank Matrix Approximation.” SIAM Journal on Matrix Analysis and Applications 39, no. 3 (August 2018): 1339–1359. https://doi.org/10.1137/17M1141977.
扩展功能
版本历史记录
在 R2020b 中推出