メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

dcm2angle

方向余弦行列から回転角度を作成する

説明

基本的な構文

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm) は、方向余弦行列dcm の回転角度 rotationAng1rotationAng2rotationAng3 を計算します。方向余弦行列は、フレーム A からフレーム B へのパッシブ変換を表します。結果の回転角度は、フレーム A からフレーム B への一連の右手固有のパッシブ回転を表します。

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm,rotationSequence) は、指定された回転シーケンスrotationSequence の回転角度を計算します。

制約、アクション、および許容範囲の構文

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm,rotationSequence,lim) は、指定された角度制約 lim の回転角度を計算します。他のすべての入力引数の後に lim を指定します。

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm,rotationSequence,lim,action) は回転角度を計算し、方向余弦行列が直交していない場合にアクションを実行します。他のすべての入力引数の後に action を指定します。

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm,rotationSequence,lim,action,tolerance) は回転角度を計算し、tolerance レベルを使用して方向余弦行列が直交しているかどうかを評価します。他のすべての入力引数の後に tolerance を指定します。

すべて折りたたむ

これらの例は、dcm2angle を使用して方向余弦行列から回転角度を決定する方法を示しています。

方向余弦行列から回転角度を決定する

方向余弦行列から回転角度を決定します。

dcm = [1 0 0; 0 1 0; 0 0 1];
[yaw, pitch, roll] = dcm2angle(dcm)
yaw = 
0
pitch = 
0
roll = 
0

複数の方向余弦行列から回転角度を決定する

複数の方向余弦行列から回転角度を決定します。

dcm        = [ 1 0 0; 0 1 0; 0 0 1];  
dcm(:,:,2) = [ 0.85253103550038   0.47703040785184  -0.21361840626067; ...
    -0.43212157513194   0.87319830445628   0.22537893734811; ...
    0.29404383655186  -0.09983341664683   0.95056378592206];
[pitch, roll, yaw] = dcm2angle(dcm,'YXZ','Default','None',0.1)
pitch = 2×1

         0
    0.3000

roll = 2×1

         0
    0.1000

yaw = 2×1

         0
    0.5000

複数の方向余弦行列から回転角度を決定します。

dcm        = [ 1 0 0; 0 1 0; 0 0 1];  
dcm(:,:,2) = [ 0.85253103550038   0.47703040785184  -0.21361840626067; ...
    -0.43212157513194   0.87319830445628   0.22537893734811; ...
    0.29404383655186  -0.09983341664683   0.95056378592206];
[pitch, roll, yaw] = dcm2angle( dcm, 'YXZ' )
pitch = 2×1

         0
    0.3000

roll = 2×1

         0
    0.1000

yaw = 2×1

         0
    0.5000

複数の方向余弦行列と角度制約から回転角度を決定する

方向余弦行列から回転角度を計算し、回転順序と角度制約を指定します。

dcm = [1 0 0; 0 1 0; 0 0 1];
[yaw, pitch, roll] = dcm2angle( dcm, 'zyx', 'robust')
yaw = 
0
pitch = 
0
roll = 
0

複数の方向余弦行列、角度制約、およびアクションから回転角度を決定する

回転順序、角度制約、およびアクションを指定して、方向余弦行列から回転角度を計算します。

dcm = [1 0 0; 0 1 0; 0 0 1];
[yaw, pitch, roll] = dcm2angle( dcm, 'zyx', 'robust', 'warning')
yaw = 
0
pitch = 
0
roll = 
0

複数の方向余弦行列、角度制約、アクション、および許容値から回転角度を決定する

回転順序、角度制約、アクション、および許容値を指定して、方向余弦行列から回転角度を計算します。

dcm = [1 0 0; 0 1 0; 0 0 1];
[yaw, pitch, roll] = dcm2angle( dcm, 'zyx', 'robust', 'warning', 0.01)
yaw = 
0
pitch = 
0
roll = 
0

入力引数

すべて折りたたむ

方向余弦行列。3 x 3 x m 行列として指定されます。ここで、m は方向余弦行列の数です。方向余弦行列は行列式+1 と直交する必要があります。

回転シーケンス。次のように指定します。

  • 'ZYX'

  • 'ZYZ'

  • 'ZXY'

  • 'ZXZ'

  • 'YXZ'

  • 'YXY'

  • 'YZX'

  • 'YZY'

  • 'XYZ'

  • 'XZY'

  • 'XYX'

  • 'XZX'

ここで、rotationAng1z 軸回転、rotationAng2y 軸回転、rotationAng3x 軸回転です。

データ型: char | string

角度拘束。次のように指定します。

  • 'Default' — 公称状態とジンバルロック状態の両方の回転角度を計算します。回転角度を計算した後、オプションは両方の回転角度を DCM に戻し、dcm 値に最も近い回転角度を出力します。このオプションは、すべての条件で最も正確なソリューションを返します。この動作は 'Robust' の動作と同じです。

  • 'ZeroR3' —ジンバル ロックが発生した場合、R3 を 0 に設定し、R1 と R2 を解きます。

  • 'Robust' — 公称状態とジンバルロック状態の両方の回転角度を計算します。回転角度を計算した後、オプションは両方の回転角度を DCM に戻し、dcm 値に最も近い回転角度を出力します。このオプションは、すべての条件で最も正確なソリューションを返します。この動作は 'Default' の動作と同じです。

角度制約の詳細については、「制限」を参照してください。

無効な方向余弦行列に対するアクション。次のように指定します。

  • 'Warning' — 警告を表示し、方向余弦行列が無効であることを示します。

  • 'Error' — エラーを表示し、方向余弦行列が無効であることを示します。

  • 'None' — 警告やエラーを表示しません。

有効な方向余弦行列は、次の場合に直交かつ適切です。

  • 方向余弦行列の転置を掛け合わせると、指定された許容値 tolerance (transpose(dcm)*dcm == 1±tolerance) 内で 1 になります。

  • 方向余弦行列の行列式は、指定された許容値 (det(dcm) == 1±tolerance) 内で 1 に等しくなります。

データ型: char | string

方向余弦行列dcm が直交しているかどうかを評価するための相対許容レベル。スカラーとして指定します。

データ型: char | string

出力引数

すべて折りたたむ

最初の回転角度。m 行 1 列の配列として、ラジアン単位で返されます。

2 番目の回転角度。m 行 1 列の配列として返されます (単位: rad)。

3 番目の回転角度。m 行 1 列の配列として返されます (単位: rad)。

制限

  • 'ZYX''ZXY''YXZ''YZX''XYZ'、および 'XZY' 実装の 'Default' 制限により、±90 度の間となる rotationAng2 角度と、±180 度の間となる rotationAng1 および rotationAng3 角度が生成されます。

  • 'ZYZ''ZXZ''YXY''YZY''XYX'、および 'XZX' 実装の 'Default' 制限により、0 ~ 180 度の範囲にある rotationAng2 角度と、±180 度の範囲にある rotationAng1 および rotationAng3 角度が生成されます。

  • 'ZYX''ZXY''YXZ''YZX''XYZ'、および 'XZY' 実装の 'ZeroR3' 制限により、±90 度の間となる rotationAng2 角度と、±180 度の間となる rotationAng1 および rotationAng3 角度が生成されます。ただし、rotationAng2 が ±90 度の場合、rotationAng3 は 0 度に設定されます。

  • 'ZYZ''ZXZ''YXY''YZY''XYX'、および 'XZX' 実装の 'ZeroR3' 制限により、0 ~ 180 度の範囲にある rotationAng2 角度と、±180 度の範囲にある rotationAng1 および rotationAng3 角度が生成されます。ただし、rotationAng2 が 0 度または ±180 度の場合、rotationAng3 は 0 度に設定されます。

バージョン履歴

R2006b で導入

すべて展開する