2015-10-09 152 views
0

我的老师告诉我们用matlab来计算矩阵的svd。这是我迄今为止所做的:根据矩阵坐标绘制直线

X=0:0.01:0.9; 
Y=5*X+randn(size(X)); 

A = [[X.'], [Y.']] 

[U,S,V] = svd(A) 

plot(X,Y,'ok') 


L1 = [0 0] 
L2 = [V(1,1) V(1,2)] 

hold on 
line (L1, L2) 
hold off 

我产生了一些(几乎)随机点,然后我把它们放在一个矩阵中,然后我计算出svd。问题是我无法想像V矩阵。从(0,0)到(v [1,1],v [1 2])的直线应该是数据密度最大的方向。 V矩阵在这里看起来很好,当我用笔和纸画出从原点到(v [1,1],v [1 2])的线时,一切看起来都很好,但是当我用line在这两点之间创建一条线时我没有得到我想要的线,该线是这样的:

enter image description here

回答

1

我认为你要

L1 = [0 V(1,1)] 
L2 = [0 V(1,2)] 

你叫L1什么这里的X坐标和L2是y坐标。为了让你的第一点成为原点,这两个数组的第一个位置是0。同样要让矩阵定义第二个点,您需要两个阵列中第二个位置的矩阵元素。