考虑以下最小示例:
function CoderEigFail() %#codegen
A = [0 sqrt(2); sqrt(2) 0];
[B C] = eig(A)
当我通过编译codegen CoderEigFail.m
并运行它时,得到的矩阵 B 与运行原始 Matlab 文件时得到的矩阵 B 不同。特别是,对于 mex 文件,我得到 B = [1 1; -1 1],而对于 Matlab 文件,我得到 B = [-0.7071 0.7071; 0.7071 0.7071]。我在 MacOSx Mountain Lion 上运行了 Matlab R2011a。
任何人都可以重现/解释这种行为吗?这是一个错误还是我在这里遗漏了什么?