gpt4 book ai didi

opencv 中的 Matlab SVD 输出

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:38 26 4
gpt4 key购买 nike

Matlab 中的 SVD 函数输出三个矩阵:

[U,S,V] = svd(X) 

我们可以使用 S 矩阵找到尽可能少的分量,以降低 X 的维度以保留足够的方差。我的问题是如何使用 Opencv 找到 S 矩阵(不是 U 矩阵),是否可以使用 OpenCV SVD 中的构建找到 S 矩阵?我的意思是 OpenCV SVD 函数像 Matlab 一样输出三个矩阵,但我不知道它们是否相同。这是 OpenCV 中的 SVD:

SVD::compute(InputArray src, OutputArray w, OutputArray u, OutputArray vt, int flags=0 ) 

这是 Matlab SVD:

[U,S,V] = svd(X).

谢谢。

最佳答案

Matlab 中的 S 和 OpenCV 中的 w 之间有一个简单的区别。

举个例子:

A = [2, 4;
1, 3;
0, 0;
0, 0]

在 Matlab 中,S 将是:

S = [5.47, 0   ;
0 , 0.37;
0 , 0 ;
0 , 0 ]

但 openCV 给出以下内容作为 w:

w = [5.47; 0.37]

因此,OpenCV 给出了一个奇异值数组,如果你真的想要 S 矩阵,你可以创建一个新矩阵并将 w 的元素放在它的对角线上。

关于opencv 中的 Matlab SVD 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12029486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com