2016-02-25 78 views
0

我想用Matlab跟蹤屬於某個矩陣的特定特徵值。假設我們有一個矩陣A = A(x),並且我想看看當我在循環中移動x時A的特定特徵值會發生什麼。是否可以在Matlab中「追蹤」特定的特徵值?

的問題是,使用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

一個2×2矩陣,它是使用分析表達式容易地追蹤特徵值,是你想要的還是更通用的?此外,「跟蹤」特徵值假定您的矩陣絕熱地變化。你知道這是你的問題嗎? – bla

+0

我正在處理的真實世界矩陣至少是128x128。我知道,從同時繪製所有特徵值(並放大各個區域),他們不斷變化...但是我想只關注單個特徵值而不是多個在各個地方重疊的特徵值,因爲它太難以理清發生了什麼當你在情節中擁有許多特徵值時。 – sonicboom

+0

你沒有提到絕熱論證。沒有太多的意義跟蹤他們,如果變化率不足夠慢(因此絕熱近似) – bla

回答

1

沒有進入數學有效性的討論(見我的意見),這是一種達到你想要使用可能所謂的粒子追蹤方案來回答什麼。例如,你可以嘗試實現這個simple particle tracker這可從FEX,或更復雜的選項,如this,或this之一。很顯然,你的問題是比較容易,因爲沒有必要「檢測」使用,另一方面圖像處理等,這些顆粒就需要適應代碼到多個維度......