代码之家  ›  专栏  ›  技术社区  ›  euraad

如何在MATLAB中绘制二维图上的协方差矩阵?

  •  0
  • euraad  · 技术社区  · 4 年前

    在MATLAB中,有一个函数叫做 cov 。如果我插入一个矩阵 X 进入 冠状病毒 像这样 cov(X) 然后 冠状病毒 将返回协方差的平方矩阵。

    我的问题很简单: 我如何使用MATLAB绘制矩阵 cov(X) 2D 情节是这样的。 我可以在谷歌上看到很多协方差矩阵图。但是他们是如何创造它们的呢?

    enter image description here

    0 回复  |  直到 4 年前
        1
  •  1
  •   Ben Grossmann    4 年前

    我的最佳猜测是,你试图将主要成分添加到情节中。要做到这一点,你可以做这样的事情。

    %% 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)
    

    结果图:

    covariance plot