2015-10-09 151 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。同樣要讓矩陣定義第二個點,您需要兩個陣列中第二個位置的矩陣元素。