Je vais tourner d'une image à l'autre avec une matrice de rotation. Le but du programme est de rendre mon Gyro parallèle à la terre, cela signifie que le vecteur de sortie devrait avoir deux premiers chiffres zéro et un troisième -9.81. Codes:Matrice de rotation dans Matlab
vs1 = 1;
vs2 = -0.003;
vs3 = -9.808;
vst = [vs1 vs2 vs3]';
alpha = (acosd(vs1/sqrt(vs1^2+vs2^2)));
gama = (acosd(vs2/sqrt(vs1^2+vs2^2)));
beta = (acosd(vs3/sqrt(vs1^2+vs2^2+vs3^2)));
R1 = [(cosd(gama)*cosd(beta)*cosd(alpha))-(sind(gama)*sind(alpha)) (cosd(gama)*cosd(beta)*sind(al)+sind(gama)*cosd(al)) (-cosd(gama)*sind(beta));((-sind(gama)*cosd(beta)*cosd(alpha))-cosd(gama)*sind(alpha)) ((-sind(gama)*cosd(beta)*sind(alpha))+(cosd(gama)*cosd(alpha))) sind(gama)*sind(beta);sind(beta)*cosd(alpha) sind(beta)*sind(alpha) cosd(beta)];
disp (R1*vst)
résultat pour vs1, et VS3 est vs2: -0,00599, 0.0000359 et 9.858845622079866. d'abord, je ne peux pas comprendre pourquoi le programme me donne Z positif et pourquoi il ne fait pas les deux premiers nombres zéro?
merci d'avance
C'est soit un bug ou une idée fausse. Dans les deux cas, vous êtes la meilleure personne pour le résoudre. Essayez de décomposer votre code en petites parties et vérifiez-les soigneusement. La ligne définissant R1 est dangereusement trop longue par exemple. – Ratbert