绘制2D主要组件

时间:2013-02-23 00:45:41

标签: matlab

Matlab新手。 创建脚本以生成2D分布并确定其主要组件。

我绘制主要成分的方法是曲折的。必须有一种更优雅的方式来绘制主要组成部分。它是什么?

我可以在我的线段末端得到箭头吗? 这是我的.m文件:

%Distrubtion variances
xx = 2;
yy = .6;
xy = .5;

%Create distribution data
A = mvnrnd([0 0] , [xx xy; xy yy], 100);

%Get principal components of data
coeff = pca(A);

%Plot distribution
h = plot(A(:,1),A(:,2),'b.');
hold on

%Do crazy stuff to plot principal components
temp=zeros(2,4);
temp(:, 2:2:end) = coeff;
scalefactor=10; %Make the lines longer
temp=scalefactor * temp
X=temp(1:2:end);
Y=temp(2:2:end);
plot(X, Y, 'r', 'LineWidth', 2);

%format plot
axis('square')
grid on;
xlabel('X Axis');
ylabel('Y Axis');
xlim([-10, 10]);
ylim([-10 10])

shg;
hold off;

1 个答案:

答案 0 :(得分:1)

这可能更合理。 quiver函数绘制箭头。 (See docs)。你仍然需要自己调整箭头大小。也许计算数据的范围而不是10,并在比例因子和轴限制中使用它。

n = length(coeff);
coeff = 10 * coeff; % Make the lines longer
quiver(zeros(1,n), zeros(1, n), coeff(1,:), coeff(2,:), 'r', 'LineWidth', 2);

另外,我不知道您使用的是哪个版本的MATLAB,但我的版本中pcaprincomp