【问题标题】:How to obtain a vector perpendicular to a set of vectors (with Matlab)?如何获得垂直于一组向量的向量(使用Matlab)?
【发布时间】:2016-12-16 15:56:55
【问题描述】:

假设我想构建一组 N 个正交向量。 其实我知道N-1个正交向量,我只想学习最后一个。

我应该求解一个线性系统,将 N-1 个已知向量与要找到的向量之间的每个标量积设置为零。但是我怎么能用 Matlab 做到这一点呢?

编辑:请注意,这个问题可以看作是一个线性方程组。 如果 U(N-1xN) 矩阵,其行包含已知向量,那么我应该求解方程 Ux = 0,其中 x 要查找的向量和 0 零向量。 为此,我使用了这个简单的代码:

   x = U\0

但是,这样一来,它显然返回了平庸的解决方案0。我需要非平凡的解决方案,有什么想法吗?

【问题讨论】:

  • 做什么?求解线性方程组? ` \ `
  • 我不认为。它返回平庸的解向量 0
  • 是的,向我们展示代码怎么样?请阅读How to Ask,尤其是minimal reproducible example
  • 不幸的是,我认为您会这样做。有太多人拒绝询问“请为我做这件事”的人。我不知道你是在问这个问题还是一个诚实的问题,除非你表现出一些努力,即 MCVE
  • 只是展示你真正尝试过的东西。你提到它给出了解决方案 0,所以你一定已经尝试过了。只是 CTRL+C CTRL+V 那个代码。再说一次,这并不反对你,只是我们每天都会收到大约 30 个问题,上面写着“请给我codez 不知道该怎么做”。只是给你建议以避免被这样的人误会

标签: matlab matrix vector orthogonal


【解决方案1】:

我很确定您想要一个满足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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多