3次元点群に対して主成分分析を使用した直交回帰の近似の仕方
19 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MATLAB内で提供されている以下のコードについてです
openExample('stats/orthoregdemo')
求めたいのは平面ではなく、直線です。
点群のデータを任意のものに変換するとしたらどういった変更を加えたら良いでしょうか。
例えば、csvファイル等から3次元の点群の座標を読み込みたいです。
0 commentaires
Réponses (1)
交感神経優位なあかべぇ
le 23 Juil 2023
Modifié(e) : 交感神経優位なあかべぇ
le 23 Juil 2023
下記に3次元空間内での近似直線を示すサンプルを書きました。
近似直線の通る点 s は、s = [dirVect] .* t + [meanX]になります。
% サンプルデータの作成(CSVデータなどからの読み取りに変更)
rng(5,'twister');
X = mvnrnd([0 0 0], [1 .2 .7; .2 1 0; .7 0 1],50);
% 主成分分析(https://jp.mathworks.com/help/stats/principal-component-analysis-pca.html)
% 1行目は、サンプルデータの近似直線の傾きを示す方向ベクトル。
% (2行目は、上記近似直線の直行成分に対する方向ベクトル。近似平面を作成する場合は、1行目と2行目が必要。)
% (3行目は、近似平面の法線ベクトル。近似平面の作成は、3行目のみでも可。)
coeff = pca(X)
dirVect = coeff(:,1)'; % 近似直線の傾き成分のみ選択
meanX = mean(X, 1); % サンプルデータの平均値(近似直線は、この点を必ず通る)
% サンプルデータに近似する空間の1次直線の描画(t=0 ~ 10までの直線を描画)
t = [0,10];
lctn = zeros(2,3);
lctn(1,:) = coeff(:,1)' .* t(1) + meanX;
lctn(2,:) = coeff(:,1)' .* t(2) + meanX;
plot3(lctn(:,1), lctn(:,2), lctn(:,3));
0 commentaires
Voir également
Catégories
En savoir plus sur LIDAR および点群の処理 dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!