0

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;
4

1 に答える 1

1

これはより合理的かもしれません。quiver関数は矢印をプロットします。(ドキュメントを参照)。ただし、矢印のサイズを自分で調整する必要があります。おそらく、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私のバージョンに含まれています。

于 2013-02-23T02:29:39.370 に答える