我正在處理一個專案,該專案包括將 Matlab 代碼翻譯成 C/C 。有一次我必須計算矩陣的特征向量,在 Matlab 中這是使用該eig函式完成的,而在 C 中我使用EigenSolver的是特征庫。
問題是一些特征向量(顯然是隨機的)與等效的 Matlab 特征向量相比具有相反的符號,這可能是我的應用程式中的一個問題。
我知道特征向量不是唯一的,所以有什么方法可以知道哪些特征向量會改變符號并簡單地乘以-1來糾正它?
uj5u.com熱心網友回復:
根據的檔案eig,不保證 MATLAB 版本和/或使用的機器之間的特征向量的符號一致:
不同的機器和 MATLAB? 版本可以產生不同的特征向量,這些特征向量在數值上仍然是準確的:
- 對于實數特征向量,特征向量的符號可以改變。
- 對于復數特征向量,特征向量可以乘以任何幅度為 1 的復數。
因此復制 MATLAB 所做的事情是不可能的,因為它沒有定義。
但是,如果您想同時修改 MATLAB 代碼和 C 代碼,那么您可以強制特征向量位于特定的半圓/半球中,例如通過要求第一個分量為正數(如果x 分量為負)。我認為這應該足以獲得一致的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318499.html
上一篇:四舍五入到最接近的十分之一
下一篇:需要生成指數矩陣
