Matlab和本征向量只在符号上不同



我正在研究一个项目,该项目包括将Matlab代码翻译为C/c++。一度我必须计算矩阵的特征向量,在Matlab使用eig函数这样做是在c++中我使用EigenSolver特征库。

问题是一些特征向量(显然是随机的)与等效的Matlab一个相比具有相反的符号,这可能是我的应用程序中的一个问题。

我不知道特征向量是独一无二的,所以有什么方法知道哪些特征向量有正确信号改变,它只是乘以1 ?

根据eig的文档,不保证MATLAB版本和/或使用的机器之间的特征向量的符号一致:

不同的机器和版本的MATLAB®可以产生不同的特征向量,仍然是数值精确的:

  • 对于实特征向量,特征向量的符号可以改变。
  • 对于复特征向量,特征向量可以乘以任何1量级的复数。

因此复制MATLAB所做的是不可能的,因为它没有定义。

然而,如果您想修改MATLAB代码和c++代码,那么您可以强制特征向量位于特定的半圆/半球,例如,通过要求第一个分量为正(如果x分量为负,则将向量乘以-1)。我认为这应该足以得到一致的结果。

相关内容

  • 没有找到相关文章

最新更新