MATLAB eller mattehjälp. Skillnad på två linjer.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Nov 2006

MATLAB eller mattehjälp. Skillnad på två linjer.

Hej Denna tråd kanske ska vara i akademiska ämnen men jag vill helst ha löst den i matlab kod så då fick det bli programmerings tråden Nästa försök blir att skaffa ett konto på stackexchange.

Hur lik form har två linjer som roterats olika?
Jag har två dataset A och B av punkter i 3d. Dessa två dataset kan båda bra approximeras av två räta linjer i 3D med lite brus.
Jag behöver hjälp att minimera standardavvikelsen på det vektoriella avståndet mellan varje punkt i A och i B efter att den bästa rotationen är gjord.

Exempel i matlab
A = [1,2,3,4,5,6,7,8,9,10;...
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 11;...
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4];

B = [1,2,3,4,5,6,7.5,8,9,10;...
1.1 2.3 3.3 4.3 5.6 6.6 7.8 8.8 9.9 10.8;...
3.1 3.2 3.35 3.4 3.5 3.6 3.7 3.8 3.9 4];

A=R*A; % Där R är den 3d rotations matris som kommer ge minst standardavvikelse.
d = A-B;
sigma = std(d');

Kan det här göras genom att finna de räta linjer som bäst beskriver A och B och finna rotationsmatrisen där i mellan eller måste jag också finna en translation samtidigt?

Asus z68-v pro | i7 2600k | Thermalright Silver Arrow | Asus GTX 1070 Strix | Corsair Vengeance 1600MHz 16GB | Seasonic X-460 | Samsung 850 EVO 500
ASRock Z87 Extreme6 | i7 4770S | Cooler Master Hyper 212 Evo | Crucial Ballistix 16GB 1600Mhz | be quiet! E9 | Samsung 840 EVO 250 | WD RED 6+6 TB, WD Green 4+4 TB

Trädvy Permalänk
Medlem
Plats
-
Registrerad
Aug 2008
Skrivet av arry:

Hej Denna tråd kanske ska vara i akademiska ämnen men jag vill helst ha löst den i matlab kod så då fick det bli programmerings tråden Nästa försök blir att skaffa ett konto på stackexchange.

Hur lik form har två linjer som roterats olika?
Jag har två dataset A och B av punkter i 3d. Dessa två dataset kan båda bra approximeras av två räta linjer i 3D med lite brus.
Jag behöver hjälp att minimera standardavvikelsen på det vektoriella avståndet mellan varje punkt i A och i B efter att den bästa rotationen är gjord.

Exempel i matlab
A = [1,2,3,4,5,6,7,8,9,10;...
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 11;...
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4];

B = [1,2,3,4,5,6,7.5,8,9,10;...
1.1 2.3 3.3 4.3 5.6 6.6 7.8 8.8 9.9 10.8;...
3.1 3.2 3.35 3.4 3.5 3.6 3.7 3.8 3.9 4];

A=R*A; % Där R är den 3d rotations matris som kommer ge minst standardavvikelse.
d = A-B;
sigma = std(d');

Kan det här göras genom att finna de räta linjer som bäst beskriver A och B och finna rotationsmatrisen där i mellan eller måste jag också finna en translation samtidigt?

Låter som nåt sånt här:
http://www.mathworks.com/matlabcentral/fileexchange/26186-abs...

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Nov 2006

@EBTS: Du är underbar. Jag vet inte om du använt den innan eller har gud googlefingrar men tack.

Asus z68-v pro | i7 2600k | Thermalright Silver Arrow | Asus GTX 1070 Strix | Corsair Vengeance 1600MHz 16GB | Seasonic X-460 | Samsung 850 EVO 500
ASRock Z87 Extreme6 | i7 4770S | Cooler Master Hyper 212 Evo | Crucial Ballistix 16GB 1600Mhz | be quiet! E9 | Samsung 840 EVO 250 | WD RED 6+6 TB, WD Green 4+4 TB