2011-03-19 87 views
0

我正在寫一個關於圖像識別和聚類的項目。在發佈這是我的項目的基礎有這個等式圖像聚類 - matlab函數的問題

enter image description here

變量描述如下

RJ給出 - 是一個旋轉矩陣第j個 集羣

t_j - 是第j個的平移向量 集羣

p * ij - 是來自第j個的第i個點 集羣

X_I - 是從圖像

我有寫這個功能有點問題,第i個點,所以我問出版物的作者,如果他能分擔我的源代碼。下面是我得到

ddx=D.x-Q.translation(1); 
ddy=D.y-Q.translation(2); 
st=sin(Q.theta); ct=cos(Q.theta); R=[ct -st; st ct]; % rotation matrix 
qq=R*[ppx0; ppy0]; 
qqd2=sum(qq.*qq,1); 
Q.scale=sum((ddx.*qq(1,:)+ddy.*qq(2,:)).*Um)/sum(qqd2.*Um); 

這裏D.xD.y是數據點

Q.translation(矢量),Q.scale的座標,並Q.theta是變換參數

ppx0ppy0是在x-y-座標* p ** ij

Um是含有矩陣[Ù IJ]

但是我有很難與理解這種解決方案。首先,我不明白爲什麼他使用的不是矩陣乘法(運營商*)是什麼數組乘法(運營商.*)更似乎他只需要一個/第一點p*

我希望有人能夠幫我試試這個源代碼。在此先感謝

回答

1

它看起來像ppx0ppy0不是座標,而是矢量或座標。這樣一來,

R*[ppx0; ppy0] = 
[ct -st ; st ct] * [x_0 x_1 ... x_N-1 ; y_0 y_1 ... y_N-1] 

因此qq是一個2×N個載體,就像[ppx0; ppy0]

qqd2=sum(qq.*qq,1)中,使用.*運算符,因爲實際上是對矩陣的每個值進行平方以找出其後每個座標對的平方距離。

ddx.*qq(1,:)+ddy.*qq(2,:).*運算符用作替換雙和的快捷方式。換句話說,不是單獨獲取每個矩陣乘積的總和(其本身就是乘法的總和),它們首先執行所有必要的乘法運算,然後進行求和。 (我希望這是有道理的)。你可以用一些基本的矩陣代數來證明所有這些工作。