Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

times, .*

要素単位の四元数の乗算

R2020b 以降

説明

quatC = A.*B は、quaternion 配列の要素単位での四元数の乗算を返します。

四元数の乗算を使用して回転演算子を構成できます。

  • 座標系の回転のシーケンスを構成するには、目的の回転シーケンスと同じ順序で四元数を乗算します。たとえば、p 四元数の後に q 四元数を適用するには、pq の順序で乗算します。回転演算子は (pq)v(pq) になります。ここで、v は回転する四元数形式のオブジェクトです。* は共役を表します。

  • 点の回転のシーケンスを構成するには、目的の回転シーケンスと逆の順序で四元数を乗算します。たとえば、p 四元数の後に q 四元数を適用するには、逆の順序 qp で乗算します。回転演算子は (qp)v(qp) になります。

すべて折りたたむ

2 つのベクトル AB を作成し、それらを要素単位で乗算します。

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

3 行 3 列の 2 つの配列 AB を作成し、それらを要素単位で乗算します。

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

四元数の乗算は可換でないことに注意してください。

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

行ベクトル a と列ベクトル b を作成し、それらを乗算します。1 行 3 列の行ベクトルと 4 行 1 列の列ベクトルが組み合わされて、乗算されたすべての要素の組み合わせを含む 4 行 3 列の行列が生成されます。

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

入力引数

すべて折りたたむ

乗算する入力。quaternion オブジェクト、任意の次元の quaternion オブジェクトの配列、実数スカラー、または任意の次元の実数の配列として指定します。数値のデータ型は single または double でなければなりません。

AB のサイズは互換性がなければなりません。最も簡単なケースでは、それらを同じサイズにするか、一方をスカラーにすることができます。すべての次元について、入力の次元サイズが同じであるか、いずれかが 1 であれば、2 つの入力のサイズには互換性があります。

乗算する入力。quaternion オブジェクト、任意の次元の quaternion オブジェクトの配列、実数スカラー、または任意の次元の実数の配列として指定します。数値のデータ型は single または double でなければなりません。

AB のサイズは互換性がなければなりません。最も簡単なケースでは、それらを同じサイズにするか、一方をスカラーにすることができます。すべての次元について、入力の次元サイズが同じであるか、いずれかが 1 であれば、2 つの入力のサイズには互換性があります。

出力引数

すべて折りたたむ

四元数の積。quaternion オブジェクト、または quaternion オブジェクトの配列として返されます。

アルゴリズム

すべて折りたたむ

四元数の実数スカラーによる乗算

次の四元数について考えます。

q=aq+bqi+cqj+dqk,

q と実数スカラー β の積は次のようになります。

βq=βaq+βbqi+βcqj+βdqk

四元数の Quaternion スカラーによる乗算

四元数の基本要素の定義は次のとおりです。

i2=j2=k2=ijk=-1,

これを展開すると、四元数の基本要素の乗算をまとめた表を次のように埋めることができます。

 1ijk
11ijk
ii-1k−j
jj−k-1i
kkj−i-1

この表を読むときは、ij = k や ji = −k のように行を先に読みます。

2 つの四元数 q=aq+bqi+cqj+dqk,p=ap+bpi+cpj+dpk が与えられた場合、乗算を次のように展開できます。

z=pq=(ap+bpi+cpj+dpk)(aq+bqi+cqj+dqk)=apaq+apbqi+apcqj+apdqk+bpaqi+bpbqi2+bpcqij+bpdqik+cpaqj+cpbqji+cpcqj2+cpdqjk+dpaqk+dpbqki+dpcqkj+dpdqk2

この方程式は、四元数の乗算の表を使用して次のように単純化できます。

z=pq=apaq+apbqi+apcqj+apdqk+bpaqibpbq+bpcqkbpdqj+cpaqjcpbqkcpcq+cpdqi+dpaqk+dpbqjdpcqidpdq

参照

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

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2020b で導入

参考

関数

オブジェクト