如何获得垂直于一组向量的向量(使用 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 = 0x 不是零向量的线性系统的非平凡解决方案。

这可以使用 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