Matlab中3x3实矩阵eig函数返回实特征值位置的技术问询
Matlab eig()函数处理3x3实矩阵的特征值排序问题
- 实特征值不会固定排在第一列,Matlab的
eig()函数默认按特征值的模(绝对值)从小到大排序,并非按虚实属性固定位置。 - 举个实际例子验证:
运行后得到的特征值依次是% 构造3x3实矩阵,包含一对复特征值和一个模更大的实特征值 A = [0 1 0; -1 0 0; 0 0 5]; [evecs, evals] = eig(A); % 提取对角线上的特征值 diag(evals)0+1i、0-1i、5,实特征值5排在第三列,直接打破了“实特征值在第一列”的假设。 - 若你的代码依赖这个错误假设,会直接导致数据处理失效,必须添加判断逻辑来定位实特征值。
- 不用担心额外判断的计算时间:针对3x3矩阵的特征值虚实判断,计算量微乎其微,不会对性能产生明显影响。可以用
isreal(diag(evals))快速筛选出实特征值的索引,再做后续处理。
内容的提问来源于stack exchange,提问作者Oscar Alvarez
相关产品推荐
相关产品推荐

