我有一個2維的橢圓,由正定矩陣X定義如下:如果x'* X * x < = 1,則點x在橢圓中。我在matlab中繪製這個橢圓?我做了一些搜索,同時發現很少。在矩陣形式給出的MATLAB中繪製一個橢圓
想通了其實答案:我會發布這作爲一個答案,但它不會讓我(新用戶):
想通了一點修修補補之後。基本上,我們將橢圓邊界(x'* X * x = 1)上的點表示爲X的特徵向量的加權組合,這使得一些數學計算更容易找到點。我們可以寫(au + bv)'X(au + bv)= 1並計算a,b之間的關係。 Matlab代碼如下(抱歉,這是混亂的,只是用,我用筆/紙相同的符號):我碰到這個崗位絆倒而尋找這個話題
function plot_ellipse(X, varargin)
% Plots an ellipse of the form x'*X*x <= 1
% plot vectors of the form a*u + b*v where u,v are eigenvectors of X
[V,D] = eig(X);
u = V(:,1);
v = V(:,2);
l1 = D(1,1);
l2 = D(2,2);
pts = [];
delta = .1;
for alpha = -1/sqrt(l1)-delta:delta:1/sqrt(l1)+delta
beta = sqrt((1 - alpha^2 * l1)/l2);
pts(:,end+1) = alpha*u + beta*v;
end
for alpha = 1/sqrt(l1)+delta:-delta:-1/sqrt(l1)-delta
beta = -sqrt((1 - alpha^2 * l1)/l2);
pts(:,end+1) = alpha*u + beta*v;
end
plot(pts(1,:), pts(2,:), varargin{:})
我明白了,但它不會讓我發表答案。如果我記得的話,我明天就會發布它 – John 2013-04-10 01:59:26