[MatLab] Hulp nodig omzetten naar VB.net

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 06-09 16:30
Ik probeer MatLab functies om te zetten naar VB.net, maar nou loop ik vast op onderstaande code:
Matlab:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
% Useage:  [dX,dY,dZ]=lg2ct(dx,dy,dz,lat,lon)
% Input:   dx  - x coordinate in local system (N)
%          dy  - y coordinate in local system (E)
%          dz  - z coordinate in local system (ht)
%          lat - lat of local system origin (rad)
%          lon - lon of local system origin (rad)
% Output:  dX  - X coordinate difference in CT
%          dY  - Y coordinate difference in CT
%          dZ  - Z coordinate difference in CT
R=zeros(3,3);
R(1,1)=-sin(lat).*cos(lon);
R(2,1)=-sin(lat).*sin(lon);
R(3,1)=cos(lat);
R(1,2)=-sin(lon);
R(2,2)=cos(lon);
R(3,2)=0;
R(1,3)=cos(lat).*cos(lon);
R(2,3)=cos(lat).*sin(lon);
R(3,3)=sin(lat);
dX=R(1,:)*[dx';dy';dz'];
dY=R(2,:)*[dx';dy';dz'];
dZ=R(3,:)*[dx';dy';dz'];
dX=dX';
dY=dY';
dZ=dZ';

De onderste 6 regels daar loop ik op vast. Weet iemand hoe ik dat moet vertalen naar VB.net?

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
lijkt me een inproduct. Dus
code:
1
2
3
R(1,:)*[dx';dy';dz']
=
R(1,1)*dx'+R(1,2)*dy'+R(1,3)*dz'

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Afaik zijn 21, 21 en 22 gewoon inproducten. Voor een inproduct heb je ook algebraische rekenregels waarmee je het kunt oplossen. Als je nu een inproduct weet uit te rekenen, kan je het zo omschrijven in VB.net :)

Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 06-09 16:30
KabouterSuper schreef op dinsdag 26 februari 2008 @ 11:02:
lijkt me een inproduct. Dus
code:
1
2
3
R(1,:)*[dx';dy';dz']
=
R(1,1)*dx'+R(1,2)*dy'+R(1,3)*dz'
Zoiets vermoedde ik al, maar wat betekend de ' ? En dan vooral bij de laatste 3 regels?

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Matlab is een vectorprogramma. Deze kan het inproduct alleen uitvoeren als de vectoren een 1,x en een x,1 matrix zijn. Als beide matrices een 1,x matrix zijn, moet je een van de twee matrices transponeren naar een x,1 matrix. Dat doet die apostrof.

Verder over het inproduct: Wikipedia: Inwendig product
Met:
Afbeeldingslocatie: http://upload.wikimedia.org/math/1/c/3/1c3732de61728a3e764bcdbc896195a5.png
en
Afbeeldingslocatie: http://upload.wikimedia.org/math/a/2/9/a2941b03200d0e48cf26d9dd6d58a051.png
Geldt het inproduct als
Afbeeldingslocatie: http://upload.wikimedia.org/math/5/3/d/53dc57862cc99cc6bc32f8287d14a040.png

Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 06-09 16:30
mithras schreef op dinsdag 26 februari 2008 @ 11:13:
Matlab is een vectorprogramma. Deze kan het inproduct alleen uitvoeren als de vectoren een 1,x en een x,1 matrix zijn. Als beide matrices een 1,x matrix zijn, moet je een van de twee matrices transponeren naar een x,1 matrix. Dat doet die apostrof.

Verder over het inproduct: Wikipedia: Inwendig product
Met:
[afbeelding]
en
[afbeelding]
Geldt het inproduct als
[afbeelding]
Dit gaat mijn wiskundeknobbeltje te boven... 8)7
code:
1
R(1,:)*[dx';dy';dz']

dx is toch geen matrix? Dan heeft die apostrof toch niets met matrix transponeren te maken?

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12-09 10:03

Creepy

Tactical Espionage Splatterer

(jarig!)
Swerfer schreef op dinsdag 26 februari 2008 @ 10:58:
Ik probeer MatLab functies om te zetten naar VB.net, maar nou loop ik vast op onderstaande code:
Matlab:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
% Useage:  [dX,dY,dZ]=lg2ct(dx,dy,dz,lat,lon)
% Input:   dx  - x coordinate in local system (N)
%          dy  - y coordinate in local system (E)
%          dz  - z coordinate in local system (ht)
%          lat - lat of local system origin (rad)
%          lon - lon of local system origin (rad)
% Output:  dX  - X coordinate difference in CT
%          dY  - Y coordinate difference in CT
%          dZ  - Z coordinate difference in CT
R=zeros(3,3);
R(1,1)=-sin(lat).*cos(lon);
R(2,1)=-sin(lat).*sin(lon);
R(3,1)=cos(lat);
R(1,2)=-sin(lon);
R(2,2)=cos(lon);
R(3,2)=0;
R(1,3)=cos(lat).*cos(lon);
R(2,3)=cos(lat).*sin(lon);
R(3,3)=sin(lat);
dX=R(1,:)*[dx';dy';dz'];
dY=R(2,:)*[dx';dy';dz'];
dZ=R(3,:)*[dx';dy';dz'];
dX=dX';
dY=dY';
dZ=dZ';

De onderste 6 regels daar loop ik op vast. Weet iemand hoe ik dat moet vertalen naar VB.net?
En wat heb je zelf al geprobeerd en wat lukte daar dan niet mee? Helemaal niks? Het is hier niet de bedoeling om je code te dumpen en op een oplossing te vragen.
Swerfer schreef op dinsdag 26 februari 2008 @ 11:29:
[...]

Dit gaat mijn wiskundeknobbeltje te boven... 8)7
code:
1
R(1,:)*[dx';dy';dz']

dx is toch geen matrix? Dan heeft die apostrof toch niets met matrix transponeren te maken?
Misschien verstandig om je er eens in te verdiepen? Want [dx';dy';dz'] is een vector en kan je wel degelijk als een matrix gebruiken. Matlab heeft hier specifieke zaken voor, in VB zul je dit zelf moeten uitprogrammeren.

[ Voor 17% gewijzigd door Creepy op 26-02-2008 11:41 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • QuaQu
  • Registratie: Oktober 2002
  • Laatst online: 18-08-2021
Swerfer schreef op dinsdag 26 februari 2008 @ 11:29:
[...]
dx is toch geen matrix? Dan heeft die apostrof toch niets met matrix transponeren te maken?
Waarom perse matrixtransponeren? Je kan een vector toch net zo goed transponeren? Van een rij- naar een kolomvector.... Maar misschien moet je in plaats van de M-file, dit regel voor regel eens uitvoeren in de command-window en daarbij kijken in bij je variabelen wat er per keer verandert. Ook nog handig is dan elke regel uit te voeren zonder ";", zodat je de uitvoer meteen kan zien.
Ook misschien wel handig is, als je er echt niks van begrijpt, even gewoon een onderdeel intypen, zoals:
R(1,:)

Zie je ook meteen wat dat betekent, mbt alleen "R"
Over die drie laatste regels zou ik ook zeggen dat het transponeren overbodig is, aangezien het transponeren van een scalar (coordinate = scalar) geen effect heeft. Maar aangezien ik ook niet de hele context van de functie en de coordinaten weet, zou ik niet 1-2-3 zeggen dat het weg kan, maar je kan het natuurlijk gewoon testen door het even tot commentaar te maken.

"Ik heb een boel geld uitgegeven aan drank, vrouwen en snelle auto's. De rest heb ik over de balk gesmeten." - George Best


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 06-09 16:30
Wat ik zelf al heb geprobeert is zoeken naar voorbeelden en uitleg van MatLab functies en dan vooral bij arrays en matrixes. Maar elke keer kom ik wiskundige termen en vergelijkingen tegen die voor mij abracadabra zijn.
Ik heb ongeveer 50 regels wel om kunnen zetten naar VB, en nou kwam ik dus die 6 regels tegen waar ik niet uit kom. Na die 6 regels moet ik nog een regel of 20 omzetten, maar dat geeft geen problemen.

Zonder het omzetten van die 6 regels krijg ik de functie niet werkend (Een functie om vanuit een geografisch coordinaat een nieuw coordinaat te berekenen door een afstand en een richting op te geven), die ik nodig heb voor een programma die ik aan het schrijven ben.

Ik weet dat ik hier geen kant en klare code kan verwachten, maar in dit geval is mijn kennis van wiskunde (vooral vwb vectoren) veruit onvoldoende. Dus ik hoop dat iemand mij een zeer goede trap in de goede richting kan geven...

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • QuaQu
  • Registratie: Oktober 2002
  • Laatst online: 18-08-2021
Swerfer schreef op dinsdag 26 februari 2008 @ 12:13:
Ik weet dat ik hier geen kant en klare code kan verwachten, maar in dit geval is mijn kennis van wiskunde (vooral vwb vectoren) veruit onvoldoende. Dus ik hoop dat iemand mij een zeer goede trap in de goede richting kan geven...
Misschien is het dan handig een boek "Lineaire algebra voor beginners" te kopen en daar hoofdstuk 1 in te lezen. Zoals je aangeeft, zit je probleem in de wiskunde niet in de code, verdiep je dan dus ook in de wiskunde. Of kijk op wikipedia (was al eerder aangegeven) naar wat een vector is, een matrix, wat het inwendig product betekent en hoe je het berekent.

"Ik heb een boel geld uitgegeven aan drank, vrouwen en snelle auto's. De rest heb ik over de balk gesmeten." - George Best

Pagina: 1