我想使用Matlab跟踪属于某个矩阵的特定特征值。假设我们有一个矩阵A = A(x),我想看看当我在循环中移动x时,A的特定特征值会发生什么。
问题是当使用Matlab eig函数时,似乎特征值不是“始终”放在输出向量中。我已经创建了一个问题的例子
clc
clear all
close all
xMin = 0;
xMax = 100;
Nx = 1001; % changed from 101 to 1001 to highlight 'continuous' eigenvalues
xRange = linspace(xMin, xMax, Nx);
for ix=1:Nx
x = xRange(ix) + 1i;
A = [ cos(x)-sin(-x), 1; 1 cos(x)-exp(-x) ];
e = eig(A);
% e = e(1); uncomment this
figure(1);
hold on
grid on
scatter(real(e), imag(e));
end
如果您运行此代码,您将看到一个包含两个不同特征值的图。现在,如果您取消注释上面的注释行,以便聚焦并绘制特定的特征值,您将看到焦点在某个点从一个特征值“跳跃”到另一个特征值。那么你如何专注于并只绘制一个特征值?
答案 0 :(得分:1)
如果不进入数学有效性的讨论(参见我的评论),可以使用所谓的粒子追踪方案来回答实现所需内容的方法。例如,您可以尝试实施可从FEX获得的此simple particle tracker,或更复杂的选项,例如this或this。显然,你的问题有点容易,因为不需要使用图像处理等“检测”粒子,另一方面你需要调整代码以适应更多的维度......