Matlab Codegen Eig功能 - 这是一个Bug吗?

时间:2013-04-17 16:44:01

标签: matlab

考虑以下最小例子:

function CoderEigFail() %#codegen
A = [0 sqrt(2); sqrt(2) 0];
[B C] = eig(A)

当我通过codegen CoderEigFail.m编译并运行它时,我获得的矩阵B与我运行原始Matlab文件时得到的矩阵不同。特别是,对于mex文件,我得到B = [1 1; -1 1],而对于Matlab文件,我得到B = [-0.7071 0.7071; 0.7071 0.7071]。我在MacOSx Mountain Lion上运行Matlab R2011a。

有人可以复制/解释这种行为吗?这是一个错误还是我错过了什么?

1 个答案:

答案 0 :(得分:5)

不,这不是一个错误。

正如斯图尔特在评论中指出的那样,特征向量通常是标准化的。这在eig()的文档中的注释中指出。

与编译版本的行为差异是“对于某些高级库函数”下的“Expected Differences in Behavior After Compiling MATLAB Code”中的文档功能。

这种行为是公认的,但不合理或解释。