Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

times, .*

Multiplication de quaternions par éléments

Description

quatC = A.*B renvoie la multiplication de quaternions élément par élément des tableaux de quaternions.

Vous pouvez utiliser la multiplication par quaternions pour composer des opérateurs de rotation :

  • Pour composer une séquence de rotations de trames, multipliez les quaternions dans le même ordre que la séquence de rotations souhaitée. Par exemple, pour appliquer un quaternion p suivi d'un quaternion q , multipliez dans l'ordre pq. L'opérateur de rotation devient (pq)v(pq), où v représente l'objet à faire pivoter sous forme de quaternion. * représente la conjugaison.

  • Pour composer une séquence de rotations de points, multipliez les quaternions dans l'ordre inverse de la séquence de rotations souhaitée. Par exemple, pour appliquer un quaternion p suivi d'un quaternion q , multipliez dans l'ordre inverse, qp. L'opérateur de rotation devient (qp)v(qp).

exemple

Exemples

réduire tout

Créez deux vecteurs, A et B, et multipliez-les élément par élément.

A = quaternion([1:4;5:8]);
B = A;
C = A.*B
C = 2x1 quaternion array
     -28 +   4i +   6j +   8k
    -124 +  60i +  70j +  80k

Créez deux tableaux 3 par 3, A et B, et multipliez-les élément par élément.

A = reshape(quaternion(randn(9,4)),3,3);
B = reshape(quaternion(randn(9,4)),3,3);
C = A.*B
C = 3x3 quaternion array
     0.60169 +  2.4332i -  2.5844j + 0.51646k    -0.49513 +  1.1722i +  4.4401j -   1.217k      2.3126 + 0.16856i +  1.0474j -  1.0921k
     -4.2329 +  2.4547i +  3.7768j + 0.77484k    -0.65232 - 0.43112i -  1.4645j - 0.90073k     -1.8897 - 0.99593i +  3.8331j + 0.12013k
     -4.4159 +  2.1926i +  1.9037j -  4.0303k     -2.0232 +  0.4205i - 0.17288j +  3.8529k     -2.9137 -  5.5239i -  1.3676j +  3.0654k

Notez que la multiplication des quaternions n'est pas commutative :

isequal(C,B.*A)
ans = logical
   0

Créez un vecteur ligne a et un vecteur colonne b, puis multipliez-les. Le vecteur ligne 1 sur 3 et le vecteur colonne 4 sur 1 se combinent pour produire une matrice 4 sur 3 avec toutes les combinaisons d'éléments multipliées.

a = [zeros("quaternion"),ones("quaternion"),quaternion(randn(1,4))]
a = 1x3 quaternion array
           0 +       0i +       0j +       0k           1 +       0i +       0j +       0k     0.53767 +  1.8339i -  2.2588j + 0.86217k

b = quaternion(randn(4,4))
b = 4x1 quaternion array
      0.31877 +   3.5784i +   0.7254j -  0.12414k
      -1.3077 +   2.7694i - 0.063055j +   1.4897k
     -0.43359 -   1.3499i +  0.71474j +    1.409k
      0.34262 +   3.0349i -  0.20497j +   1.4172k

a.*b
ans = 4x3 quaternion array
            0 +        0i +        0j +        0k      0.31877 +   3.5784i +   0.7254j -  0.12414k      -4.6454 +   2.1636i +   2.9828j +   9.6214k
            0 +        0i +        0j +        0k      -1.3077 +   2.7694i - 0.063055j +   1.4897k      -7.2087 -   4.2197i +   2.5758j +   5.8136k
            0 +        0i +        0j +        0k     -0.43359 -   1.3499i +  0.71474j +    1.409k       2.6421 -     5.32i -   2.3841j -   1.3547k
            0 +        0i +        0j +        0k      0.34262 +   3.0349i -  0.20497j +   1.4172k      -7.0663 -  0.76439i -  0.86648j +   7.5369k

Arguments d'entrée

réduire tout

Entrée à multiplier, spécifiée comme un objet quaternion , un tableau d'objets quaternion de n'importe quelle dimensionnalité, un scalaire réel ou un tableau de nombres réels de n'importe quelle dimensionnalité. Les valeurs numériques doivent être du type de données single ou double.

A et B doivent avoir des tailles compatibles. Dans les cas les plus simples, ils peuvent être de la même taille ou l'un d'entre eux peut être un scalaire. Deux entrées ont des tailles compatibles si, pour chaque dimension, les tailles des dimensions des entrées sont les mêmes ou si l'une d'entre elles est 1.

Entrée à multiplier, spécifiée comme un objet quaternion , un tableau d'objets quaternion de n'importe quelle dimensionnalité, un scalaire réel ou un tableau de nombres réels de n'importe quelle dimensionnalité. Les valeurs numériques doivent être du type de données single ou double.

A et B doivent avoir des tailles compatibles. Dans les cas les plus simples, ils peuvent être de la même taille ou l'un d'entre eux peut être un scalaire. Deux entrées ont des tailles compatibles si, pour chaque dimension, les tailles des dimensions des entrées sont les mêmes ou si l'une d'entre elles est 1.

Arguments de sortie

réduire tout

Produit Quaternion, renvoyé sous la forme d'un objet quaternion ou d'un tableau d'objets quaternion .

Algorithmes

réduire tout

Références

[1] Kuipers, Jack B. Quaternions and Rotation Sequences: A Primer with Applications to Orbits, Aerospace, and Virtual Reality. Princeton, NJ: Princeton University Press, 2007.

Capacités étendues

développer tout

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit dans R2019b