利用奇異值分解的剛體變換 MATLAB

2021-09-27 00:26:36 字數 770 閱讀 9233

%% 在三維空間中對給定兩個點集,利用svd方法實現從乙個點集到另乙個點集的剛體變換

clear;

clc;

d=3; %給定空間維數

n=10; %給定點對數

p=10*rand(d,n); %點集p

q=2*rand(d,n); %點集q

%%-----生成點對權重-----

w=rand(10,1);

w=w/sum(w); %權重

%%---------------------

%%-----生成點集p和q的中心點-----

s_wp=zeros(d,1);

s_wq=zeros(d,1);

for i=1:n

s_wp=s_wp+w(i)*p(:,i);

s_wq=s_wq+w(i)*q(:,i);

endp_hat=s_wp/sum(w); %點集p的中心點p_hat

q_hat=s_wq/sum(w); %點集q的中心點q_hat

%%---------------------

x=p-p_hat; %點集p去中心化

y=q-q_hat; %點集q去中心化

w=diag(w); %生成權重對角矩陣

s=x*w*y'; %獲得要進行奇異值分解的矩陣

[u,sigma,v]=svd(s); %奇異值分解

r=v*u'; %要求的旋轉矩陣

t=q_hat-r*p_hat; %要求的轉移矩陣

奇異值分解

奇異值分解 singular value decomposition 是線性代數中一種重要的 矩陣分解,是矩陣分析中正規矩陣酉對角化的推廣。在訊號處理 統計學等領域有重要應用。1基本介紹 2理論描述 3幾何意義 4範數 5應用 求偽逆 平行奇異值模型 矩陣近似值 奇異值分解在某些方面與 對稱矩陣或 ...

奇異值分解

從幾何 的角度上來看奇異值分解 上圖表明任意的矩陣 a 是可以分解成三個矩陣相乘的形式。v表示了原始域的標準正交基,u表示經過a 變換後的co domain的標準正交基,表示了v 中的向量與u中相對應向量之間的關係。我們仔細觀察上圖發現,線性變換a可以分解為旋轉 縮放 旋轉這三種基本線性變換。接下來...

奇異值分解

本文 知乎 我們先舉乙個例子,假設現在我們拿到這樣一組資料,裡面有兩個屬性,既有以 千公尺 每小時 度量的最大速度特徵,也有 英里 小時 的最大速度特徵,顯然我們一眼就看出這兩個特徵有乙個多餘。怎麼直觀的判斷資料是否冗餘?上圖從左往右,我們可以發現資料之間的關聯性越來越強,也就是說兩組資料越來越 相...