times, .*
説明
は、quaternion 配列の要素単位での四元数の乗算を返します。quatC
= A
.*B
四元数の乗算を使用して回転演算子を構成できます。
座標系の回転のシーケンスを構成するには、目的の回転シーケンスと同じ順序で四元数を乗算します。たとえば、p 四元数の後に q 四元数を適用するには、pq の順序で乗算します。回転演算子は になります。ここで、v は回転する四元数形式のオブジェクトです。* は共役を表します。
点の回転のシーケンスを構成するには、目的の回転シーケンスと逆の順序で四元数を乗算します。たとえば、p 四元数の後に q 四元数を適用するには、逆の順序 qp で乗算します。回転演算子は になります。
例
2 つの quaternion ベクトルの乗算
2 つのベクトル A
と B
を作成し、それらを要素単位で乗算します。
A = quaternion([1:4;5:8]); B = A; C = A.*B
C = 2x1 quaternion array
-28 + 4i + 6j + 8k
-124 + 60i + 70j + 80k
2 つの quaternion 配列の乗算
3 行 3 列の 2 つの配列 A
と B
を作成し、それらを要素単位で乗算します。
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
入力引数
A
— 乗算する入力
quaternion
オブジェクト | quaternion
オブジェクトの配列 | 実数スカラー | 実数の配列
乗算する入力。quaternion
オブジェクト、任意の次元の quaternion
オブジェクトの配列、実数スカラー、または任意の次元の実数の配列として指定します。数値のデータ型は single
または double
でなければなりません。
A
と B
のサイズは互換性がなければなりません。最も簡単なケースでは、それらを同じサイズにするか、一方をスカラーにすることができます。すべての次元について、入力の次元サイズが同じであるか、いずれかが 1 であれば、2 つの入力のサイズには互換性があります。
B
— 乗算する入力
quaternion
オブジェクト | quaternion
オブジェクトの配列 | 実数スカラー | 実数の配列
乗算する入力。quaternion
オブジェクト、任意の次元の quaternion
オブジェクトの配列、実数スカラー、または任意の次元の実数の配列として指定します。数値のデータ型は single
または double
でなければなりません。
A
と B
のサイズは互換性がなければなりません。最も簡単なケースでは、それらを同じサイズにするか、一方をスカラーにすることができます。すべての次元について、入力の次元サイズが同じであるか、いずれかが 1 であれば、2 つの入力のサイズには互換性があります。
出力引数
quatC
— 四元数の積
quaternion
オブジェクト | quaternion
オブジェクトの配列
四元数の積。quaternion
オブジェクト、または quaternion
オブジェクトの配列として返されます。
アルゴリズム
四元数の実数スカラーによる乗算
次の四元数について考えます。
q と実数スカラー β の積は次のようになります。
四元数の Quaternion スカラーによる乗算
四元数の基本要素の定義は次のとおりです。
これを展開すると、四元数の基本要素の乗算をまとめた表を次のように埋めることができます。
1 | i | j | k | |
1 | 1 | i | j | k |
i | i | -1 | k | −j |
j | j | −k | -1 | i |
k | k | j | −i | -1 |
この表を読むときは、ij = k や ji = −k のように行を先に読みます。
2 つの四元数 と が与えられた場合、乗算を次のように展開できます。
この方程式は、四元数の乗算の表を使用して次のように単純化できます。
参照
[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++ コードを生成します。
バージョン履歴
R2020a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)