如何在 MATLAB 中的二维图上绘制协方差矩阵?
How to plot a covariance matrix on a 2D plot in MATLAB?
在 MATLAB 中有一个名为 cov
的函数。如果我像这样 cov(X)
将矩阵 X
插入 cov
,那么 cov
将 return 协方差矩阵。
我的问题很简单:
我如何使用 MATLAB 将该矩阵 cov(X)
绘制到像这样的 2D
图上。
我可以在 Google 看到很多协方差矩阵图。但是他们是如何创建它们的呢?
我的最佳猜测是您正在尝试将主成分添加到绘图中。为此,您可以这样做。
%% generate data points
S_tru = [2 1; 1 1];
N = 1000;
%% compute mean, covariance, principal components
X = mvnrnd([0,0],S_tru,N);
mu = mean(X);
S = cov(X);
[U,D] = eig(S);
%% specify base points/directions for arrows
base = [mu;mu];
vecs = sqrt(D)*U';
vecs = 2 * vecs;
%% plot
plot(X(:,1),X(:,2), 'r.')
axis equal
hold on
quiver(base(:,1),base(:,2),vecs(:,1),vecs(:,2),'blue','LineWidth',2)
结果图:
在 MATLAB 中有一个名为 cov
的函数。如果我像这样 cov(X)
将矩阵 X
插入 cov
,那么 cov
将 return 协方差矩阵。
我的问题很简单:
我如何使用 MATLAB 将该矩阵 cov(X)
绘制到像这样的 2D
图上。
我可以在 Google 看到很多协方差矩阵图。但是他们是如何创建它们的呢?
我的最佳猜测是您正在尝试将主成分添加到绘图中。为此,您可以这样做。
%% generate data points
S_tru = [2 1; 1 1];
N = 1000;
%% compute mean, covariance, principal components
X = mvnrnd([0,0],S_tru,N);
mu = mean(X);
S = cov(X);
[U,D] = eig(S);
%% specify base points/directions for arrows
base = [mu;mu];
vecs = sqrt(D)*U';
vecs = 2 * vecs;
%% plot
plot(X(:,1),X(:,2), 'r.')
axis equal
hold on
quiver(base(:,1),base(:,2),vecs(:,1),vecs(:,2),'blue','LineWidth',2)
结果图: