如何获得垂直于一组向量的向量(使用 Matlab)?
How to obtain a vector perpendicular to a set of vectors (with Matlab)?
假设我想构建一组 N 个正交向量。
其实我知道N-1个正交向量,我只想学最后一个
我应该求解一个线性系统,将 N-1 个已知向量与要查找的向量之间的每个标量积设置为零。但是我怎么能用 Matlab 做到这一点呢?
编辑:请注意,这个问题可以看作是一个线性方程组。
如果 U 是 (N-1xN) 矩阵,其行包含已知向量,那么我应该求解方程 Ux = 0,其中 x 是要查找的向量,0 是零向量。
为此,我使用了这个简单的代码:
x = U[=10=]
但是,以这种方式,它显然 returns 平庸的解决方案 0。我需要非平凡的解决方案,知道吗?
我很确定您想要一个满足 Ax = 0
而 x
不是零向量的线性系统的非平凡解决方案。
这可以使用 Singular value decomposition 来完成,如下所示:
A = [2 -1 1; 2 -1 1; 3 2 1];
[U S V] = svd(A);
x = V(:,end)
x =
-0.39057
0.13019
0.91132
A*x =
0
0
0
假设我想构建一组 N 个正交向量。 其实我知道N-1个正交向量,我只想学最后一个
我应该求解一个线性系统,将 N-1 个已知向量与要查找的向量之间的每个标量积设置为零。但是我怎么能用 Matlab 做到这一点呢?
编辑:请注意,这个问题可以看作是一个线性方程组。 如果 U 是 (N-1xN) 矩阵,其行包含已知向量,那么我应该求解方程 Ux = 0,其中 x 是要查找的向量,0 是零向量。 为此,我使用了这个简单的代码:
x = U[=10=]
但是,以这种方式,它显然 returns 平庸的解决方案 0。我需要非平凡的解决方案,知道吗?
我很确定您想要一个满足 Ax = 0
而 x
不是零向量的线性系统的非平凡解决方案。
这可以使用 Singular value decomposition 来完成,如下所示:
A = [2 -1 1; 2 -1 1; 3 2 1];
[U S V] = svd(A);
x = V(:,end)
x =
-0.39057
0.13019
0.91132
A*x =
0
0
0