Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

쿼터니언

쿼터니언 배열 생성

R2019b 이후

설명

쿼터니언은 3차원 회전 및 방향에 사용되는 네 개 부분으로 구성된 초복소수입니다.

쿼터니언 수는 a+bi+cj+dk 형식으로 표현됩니다. 여기서 a, b, c, d 부분은 실수이고, i, j, k는 방정식 i2 = j2 = k2 = ijk = −1을 충족하는 기저 요소입니다.

H로 표시되는 쿼터니언 세트는 실수에 대한 4차원 벡터 공간인 R4 내에서 정의됩니다. H의 모든 요소는 기저 요소 i, j, k의 선형 결합을 기반으로 고유한 표현을 갖습니다.

3차원의 모든 회전은 회전 축과 그 축을 중심으로 한 각도로 설명할 수 있습니다. 회전 행렬에 비해 쿼터니언의 장점은 회전 축과 회전 각도를 쉽게 해석할 수 있다는 것입니다. 예를 들어 R3의 한 점을 생각해 보십시오. 이 점을 회전시키려면 회전 축과 회전 각도를 정의합니다.

Rotation Illustration

이 회전의 쿼터니언 표현은 q=cos(θ2)+sin(θ2)(ubi+ucj+udk)로 표현될 수 있으며, 여기서 θ는 회전 각도이고 [ub, uc, ud]는 회전 축입니다.

생성

설명

예제

quat = quaternion()은 빈 쿼터니언을 생성합니다.

예제

quat = quaternion(A,B,C,D)는 배열 A, B, C, D에서 네 가지 쿼터니언 부분을 가져오는 쿼터니언 배열을 생성합니다. 모든 입력값은 크기와 데이터형이 동일해야 합니다.

예제

quat = quaternion(matrix)는 각 열이 쿼터니언의 한 부분이 되는 N×4 행렬에서 N×1 쿼터니언 배열을 생성합니다.

예제

quat = quaternion(RV,"rotvec")는 회전 벡터로 구성된 N×3 행렬 RV에서 N×1 쿼터니언 배열을 생성합니다. RV의 각 행은 라디안 단위의 회전 벡터를 나타냅니다.

예제

quat = quaternion(RV,"rotvecd")는 회전 벡터로 구성된 N×3 행렬 RV에서 N×1 쿼터니언 배열을 생성합니다. RV의 각 행은 도 단위의 회전 벡터를 나타냅니다.

예제

quat = quaternion(RM,"rotmat",PF)는 회전 행렬로 구성된 3×3×N 배열 RM에서 N×1 쿼터니언 배열을 생성합니다. PF는 오일러 각이 점 회전을 나타내는 경우 "point", 프레임 회전을 나타내는 경우 "frame"일 수 있습니다.

예제

quat = quaternion(E,"euler",RS,PF)는 N×3 행렬 E에서 N×1 쿼터니언 배열을 생성합니다. E의 각 행은 하나의 오일러 각 세트(단위: 라디안)를 나타냅니다. E의 각도는 시퀀스 RS의 좌표축을 중심으로 한 회전입니다.

예제

quat = quaternion(E,"eulerd",RS,PF)는 N×3 행렬 E에서 N×1 쿼터니언 배열을 생성합니다. E의 각 행은 하나의 오일러 각 세트(단위: 도)를 나타냅니다. E의 각도는 시퀀스 RS의 좌표축을 중심으로 한 회전입니다.

quat = quaternion(transformation)은 SE(3) 변환 transformation에서 쿼터니언 배열을 생성합니다.

quat = quaternion(rotation)은 SO(3) 회전 rotation에서 쿼터니언 배열을 생성합니다.

입력 인수

모두 확장

쿼터니언의 부분으로, 크기가 동일한 4개의 스칼라, 행렬 또는 다차원 배열로 지정되며 쉼표로 구분됩니다.

예: quat = quaternion(1,2,3,4)는 1 + 2i + 3j + 4k 형식의 쿼터니언을 생성합니다.

예: quat = quaternion([1,5],[2,6],[3,7],[4,8])quat(1,1) = 1 + 2i + 3j + 4kquat(1,2) = 5 + 6i + 7j + 8k인 1×2 쿼터니언 배열을 생성합니다

데이터형: single | double

쿼터니언 부분으로 구성된 행렬로, N×4 행렬로 지정됩니다. 각 행은 개별 쿼터니언을 나타냅니다. 각 열은 개별 쿼터니언 부분을 나타냅니다.

예: quat = quaternion(rand(10,4))는 10×1 쿼터니언 배열을 생성합니다.

데이터형: single | double

회전 벡터로 구성된 행렬로, N×3 행렬로 지정됩니다. RV의 각 행은 회전 벡터의 [X Y Z] 요소를 나타냅니다. 회전 벡터는 라디안 단위 또는 도 단위의 회전 각도에 의해 스케일링된 회전 축을 나타내는 단위 벡터입니다.

이 구문을 사용하려면 첫 번째 인수를 회전 벡터로 구성된 행렬로 지정하고 두 번째 인수를 "rotvec" 또는 "rotvecd"로 지정하십시오.

예: quat = quaternion(rand(10,3),"rotvec")는 10×1 쿼터니언 배열을 생성합니다.

데이터형: single | double

회전 행렬로 구성된 배열로, 3×3 행렬 또는 3×3×N 배열로 지정됩니다. 배열의 각 페이지는 개별 회전 행렬을 나타냅니다.

예: quat = quaternion(rand(3),"rotmat","point")

예: quat = quaternion(rand(3),"rotmat","frame")

데이터형: single | double

회전 행렬의 유형으로, "point" 또는 "frame"으로 지정됩니다.

예: quat = quaternion(rand(3),"rotmat","point")

예: quat = quaternion(rand(3),"rotmat","frame")

데이터형: char | string

오일러 각으로 구성된 행렬로, N×3 행렬로 지정됩니다. "euler" 구문을 사용하는 경우 E를 라디안 단위로 지정합니다. "eulerd" 구문을 사용하는 경우 E를 도 단위로 지정합니다.

예: quat = quaternion(E,"euler","YZY","point")

예: quat = quaternion(E,"euler","XYZ","frame")

데이터형: single | double

회전 시퀀스로, 요소를 3개 가진 문자형 벡터로 지정됩니다.

  • "YZY"

  • "YXY"

  • "ZYZ"

  • "ZXZ"

  • "XYX"

  • "XZX"

  • "XYZ"

  • "YZX"

  • "ZXY"

  • "XZY"

  • "ZYX"

  • "YXZ"

좌표계가 프레임 회전을 사용하여 회전할 때 점의 새 좌표를 결정하려 한다고 가정하겠습니다. 점은 원래 좌표계에서 다음과 같이 정의됩니다.

point = [sqrt(2)/2,sqrt(2)/2,0];
이 표현에서 첫 번째 열은 x축, 두 번째 열은 y축, 세 번째 열은 z축을 나타냅니다.

오일러 각 표현 [45,45,0]을 사용하여 점을 회전하려고 합니다. 두 가지 다른 회전 시퀀스를 사용하여 점을 회전합니다.

  • 쿼터니언 회전자를 만들고 "ZYX" 시퀀스를 지정하면 프레임은 먼저 z축을 중심으로 45도 회전한 다음 새로운 y축을 중심으로 45도 회전합니다.

    quatRotator = quaternion([45,45,0],"eulerd","ZYX","frame");
    newPointCoordinate = rotateframe(quatRotator,point)
    newPointCoordinate =
    
        0.7071   -0.0000    0.7071

    Three Consecutive Rotations in ZYX

  • 쿼터니언 회전자를 만들고 "YZX" 시퀀스를 지정하면 프레임은 먼저 y축을 중심으로 45도 회전한 다음 새로운 z축을 중심으로 45도 회전합니다.

    quatRotator = quaternion([45,45,0],"eulerd","YZX","frame");
    newPointCoordinate = rotateframe(quatRotator,point)
    newPointCoordinate =
    
        0.8536    0.1464    0.5000

    Three Consecutive Rotations in YZX

데이터형: char | string

변환으로, se3 객체 또는 se3 객체 요소를 N개 가진 배열로 지정됩니다. 여기서 N은 총 변환 수입니다.

quaternion 객체는 변환의 평행 이동 성분을 무시하고 변환의 회전 3×3 부분행렬을 쿼터니언으로 바꿉니다.

정규 직교 회전으로, so3 객체 또는 so3 객체 요소를 N개 가진 배열로 지정됩니다. 여기서 N은 총 회전 수입니다.

객체 함수

angvel쿼터니언 배열의 각속도
classUnderlyingClass of parts within quaternion
compact쿼터니언 배열을 N×4 행렬로 변환
conj쿼터니언의 켤레 복소수
'Complex conjugate transpose of quaternion array
distAngular distance in radians
euler쿼터니언을 오일러 각(단위: 라디안)으로 변환
eulerd쿼터니언을 오일러 각(단위: 도)으로 변환
exp쿼터니언 배열의 지수
.\,ldivide요소별 쿼터니언 왼쪽 나눗셈
log쿼터니언 배열의 자연 로그
meanrotQuaternion mean rotation
-Quaternion subtraction
*쿼터니언 곱셈
norm쿼터니언 노름
normalize쿼터니언 정규화
onesCreate quaternion array with real parts set to one and imaginary parts set to zero
parts쿼터니언 부분 추출
.^,powerElement-wise quaternion power
prodProduct of quaternion array
randrotUniformly distributed random rotations
./,rdivide요소별 쿼터니언 오른쪽 나눗셈
rotateframeQuaternion frame rotation
rotatepointQuaternion point rotation
rotmat쿼터니언을 회전 행렬로 변환
rotvecConvert quaternion to rotation vector (radians)
rotvecdConvert quaternion to rotation vector (degrees)
slerpSpherical linear interpolation
.*,timesElement-wise quaternion multiplication
'Transpose quaternion array
-Quaternion unary minus
zerosCreate quaternion array with all parts set to zero

예제

모두 축소

quat = quaternion()
quat = 

  0x0 empty quaternion array

기본적으로 쿼터니언의 기본 클래스는 double형입니다.

classUnderlying(quat)
ans = 
'double'

쉼표로 구분된 동일한 크기의 스칼라, 행렬 또는 다차원 배열로 네 개 부분을 지정하여 하나의 쿼터니언 배열을 생성할 수 있습니다.

쿼터니언 부분을 스칼라로 정의합니다.

A = 1.1;
B = 2.1;
C = 3.1;
D = 4.1;
quatScalar = quaternion(A,B,C,D)
quatScalar = quaternion
     1.1 + 2.1i + 3.1j + 4.1k

쿼터니언 부분을 열 벡터로 정의합니다.

A = [1.1;1.2];
B = [2.1;2.2];
C = [3.1;3.2];
D = [4.1;4.2];
quatVector = quaternion(A,B,C,D)
quatVector = 2x1 quaternion array
     1.1 + 2.1i + 3.1j + 4.1k
     1.2 + 2.2i + 3.2j + 4.2k

쿼터니언 부분을 행렬로 정의합니다.

A = [1.1,1.3; ...
     1.2,1.4];
B = [2.1,2.3; ...
     2.2,2.4];
C = [3.1,3.3; ...
     3.2,3.4];
D = [4.1,4.3; ...
     4.2,4.4];
quatMatrix = quaternion(A,B,C,D)
quatMatrix = 2x2 quaternion array
     1.1 + 2.1i + 3.1j + 4.1k     1.3 + 2.3i + 3.3j + 4.3k
     1.2 + 2.2i + 3.2j + 4.2k     1.4 + 2.4i + 3.4j + 4.4k

쿼터니언 부분을 3차원 배열로 정의합니다.

A = randn(2,2,2);
B = zeros(2,2,2);
C = zeros(2,2,2);
D = zeros(2,2,2);
quatMultiDimArray = quaternion(A,B,C,D)
quatMultiDimArray = 2x2x2 quaternion array
quatMultiDimArray(:,:,1) = 

     0.53767 +       0i +       0j +       0k     -2.2588 +       0i +       0j +       0k
      1.8339 +       0i +       0j +       0k     0.86217 +       0i +       0j +       0k


quatMultiDimArray(:,:,2) = 

     0.31877 +       0i +       0j +       0k    -0.43359 +       0i +       0j +       0k
     -1.3077 +       0i +       0j +       0k     0.34262 +       0i +       0j +       0k

쿼터니언 부분으로 구성된 N×4 행렬을 지정하여, 쿼터니언의 스칼라 또는 열 벡터를 생성할 수 있습니다. 여기서 열은 쿼터니언 부분 A, B, C, D에 대응합니다.

난수 쿼터니언의 열 벡터를 생성합니다.

quatParts = rand(3,4)
quatParts = 3×4

    0.8147    0.9134    0.2785    0.9649
    0.9058    0.6324    0.5469    0.1576
    0.1270    0.0975    0.9575    0.9706

quat = quaternion(quatParts)
quat = 3x1 quaternion array
     0.81472 + 0.91338i +  0.2785j + 0.96489k
     0.90579 + 0.63236i + 0.54688j + 0.15761k
     0.12699 + 0.09754i + 0.95751j + 0.97059k

쿼터니언 표현에서 quatParts 행렬을 가져오려면 compact를 사용합니다.

retrievedquatParts = compact(quat)
retrievedquatParts = 3×4

    0.8147    0.9134    0.2785    0.9649
    0.9058    0.6324    0.5469    0.1576
    0.1270    0.0975    0.9575    0.9706

라디안 단위 또는 도 단위의 회전 벡터로 구성된 N×3 행렬을 지정하여 N×1 쿼터니언 배열을 생성할 수 있습니다. 회전 벡터는 정규화된 쿼터니언과 일대일 관계를 갖는 간소화된 공간 표현입니다.

라디안 단위의 회전 벡터

회전 벡터를 사용하여 스칼라 쿼터니언을 만들고 그 결과로 생성된 쿼터니언이 정규화되었는지 확인합니다.

rotationVector = [0.3491,0.6283,0.3491];
quat = quaternion(rotationVector,"rotvec")
quat = quaternion
     0.92124 + 0.16994i + 0.30586j + 0.16994k

norm(quat)
ans = 1.0000

rotvec 함수를 사용하여 쿼터니언에서 라디안 단위의 회전 벡터로 변환할 수 있습니다. 쿼터니언 quat에서 rotationVector를 복구합니다.

rotvec(quat)
ans = 1×3

    0.3491    0.6283    0.3491

도 단위의 회전 벡터

회전 벡터를 사용하여 스칼라 쿼터니언을 만들고 그 결과로 생성된 쿼터니언이 정규화되었는지 확인합니다.

rotationVector = [20,36,20];
quat = quaternion(rotationVector,"rotvecd")
quat = quaternion
     0.92125 + 0.16993i + 0.30587j + 0.16993k

norm(quat)
ans = 1

rotvecd 함수를 사용하여 쿼터니언에서 도 단위의 회전 벡터로 변환할 수 있습니다. 쿼터니언 quat에서 rotationVector를 복구합니다.

rotvecd(quat)
ans = 1×3

   20.0000   36.0000   20.0000

회전 행렬로 구성된 3×3×N 배열을 지정하여 N×1 쿼터니언 배열을 생성할 수 있습니다. 회전 행렬 배열의 각 페이지는 쿼터니언 배열의 한 요소에 대응합니다.

3×3 회전 행렬을 사용하여 스칼라 쿼터니언을 생성합니다. 회전 행렬을 프레임으로 해석할지, 아니면 점 회전으로 해석할지를 지정합니다.

rotationMatrix = [1 0         0; ...
                  0 sqrt(3)/2 0.5; ...
                  0 -0.5      sqrt(3)/2];
quat = quaternion(rotationMatrix,"rotmat","frame")
quat = quaternion
     0.96593 + 0.25882i +       0j +       0k

rotmat 함수를 사용하여 쿼터니언에서 회전 행렬로 변환할 수 있습니다. 쿼터니언 quat에서 rotationMatrix를 복구합니다.

rotmat(quat,"frame")
ans = 3×3

    1.0000         0         0
         0    0.8660    0.5000
         0   -0.5000    0.8660

라디안 단위 또는 도 단위의 오일러 각으로 구성된 N×3 배열을 지정하여 N×1 쿼터니언 배열을 생성할 수 있습니다.

라디안 단위의 오일러 각

라디안 단위의 오일러 각으로 구성된 1×3 벡터를 사용하여 스칼라 쿼터니언을 생성하려면 euler 구문을 사용합니다. 오일러 각의 회전 시퀀스를 지정하고, 각도가 프레임을 나타내는지 아니면 점 회전을 나타내는지를 지정합니다.

E = [pi/2,0,pi/4];
quat = quaternion(E,"euler","ZYX","frame")
quat = quaternion
     0.65328 +  0.2706i +  0.2706j + 0.65328k

euler 함수를 사용하여 쿼터니언에서 오일러 각으로 변환할 수 있습니다. 쿼터니언 quat에서 오일러 각 E를 복구합니다.

euler(quat,"ZYX","frame")
ans = 1×3

    1.5708         0    0.7854

도 단위의 오일러 각

도 단위의 오일러 각으로 구성된 1×3 벡터를 사용하여 스칼라 쿼터니언을 생성하려면 eulerd 구문을 사용합니다. 오일러 각의 회전 시퀀스를 지정하고, 각도가 프레임을 나타내는지 아니면 점 회전을 나타내는지를 지정합니다.

E = [90,0,45];
quat = quaternion(E,"eulerd","ZYX","frame")
quat = quaternion
     0.65328 +  0.2706i +  0.2706j + 0.65328k

eulerd 함수를 사용하여 쿼터니언에서 도 단위의 오일러 각으로 변환할 수 있습니다. 쿼터니언 quat에서 오일러 각 E를 복구합니다.

eulerd(quat,"ZYX","frame")
ans = 1×3

   90.0000         0   45.0000

쿼터니언은 실수를 대상으로 비가환적이고 결합 법칙이 성립하는 대수를 형성합니다. 이 예제는 쿼터니언 대수의 규칙을 설명합니다.

덧셈과 뺄셈

쿼터니언 덧셈과 뺄셈은 부분별로 이루어지며 가환적입니다.

Q1 = quaternion(1,2,3,4)
Q1 = quaternion
     1 + 2i + 3j + 4k

Q2 = quaternion(9,8,7,6)
Q2 = quaternion
     9 + 8i + 7j + 6k

Q1plusQ2 = Q1 + Q2
Q1plusQ2 = quaternion
     10 + 10i + 10j + 10k

Q2plusQ1 = Q2 + Q1
Q2plusQ1 = quaternion
     10 + 10i + 10j + 10k

Q1minusQ2 = Q1 - Q2
Q1minusQ2 = quaternion
    -8 - 6i - 4j - 2k

Q2minusQ1 = Q2 - Q1
Q2minusQ1 = quaternion
     8 + 6i + 4j + 2k

또한 실수와 쿼터니언의 덧셈과 뺄셈도 가능합니다. 쿼터니언의 첫 번째 부분을 실수부라고 하고 두 번째, 세 번째, 네 번째 부분을 벡터라고 합니다. 실수를 사용한 덧셈과 뺄셈은 쿼터니언의 실수부에만 영향을 미칩니다.

Q1plusRealNumber = Q1 + 5
Q1plusRealNumber = quaternion
     6 + 2i + 3j + 4k

Q1minusRealNumber = Q1 - 5
Q1minusRealNumber = quaternion
    -4 + 2i + 3j + 4k

곱셈

쿼터니언 곱셈은 기저 요소의 곱과 분배 법칙에 의해 결정됩니다. 기저 요소 i, j, k의 곱셈이 비가환적이므로 쿼터니언 곱셈도 비가환적입니다.

Q1timesQ2 = Q1 * Q2
Q1timesQ2 = quaternion
    -52 + 16i + 54j + 32k

Q2timesQ1 = Q2 * Q1
Q2timesQ1 = quaternion
    -52 + 36i + 14j + 52k

isequal(Q1timesQ2,Q2timesQ1)
ans = logical
   0

쿼터니언에 실수를 곱할 수도 있습니다. 쿼터니언에 실수를 곱하면 쿼터니언의 각 부분에 개별적으로 실수가 곱해집니다.

Q1times5 = Q1*5
Q1times5 = quaternion
      5 + 10i + 15j + 20k

쿼터니언에 실수를 곱하는 것은 가환적입니다.

isequal(Q1*5,5*Q1)
ans = logical
   1

켤레

쿼터니언의 켤레 복소수는 쿼터니언 벡터 부분의 각 요소에 음을 취하는 것으로 정의됩니다.

Q1
Q1 = quaternion
     1 + 2i + 3j + 4k

conj(Q1)
ans = quaternion
     1 - 2i - 3j - 4k

쿼터니언과 그 켤레 간의 곱셈은 가환적입니다.

isequal(Q1*conj(Q1),conj(Q1)*Q1)
ans = logical
   1

다수의 쿼터니언을 벡터, 행렬, 다차원 배열로 구성할 수 있습니다. MATLAB® 내장 함수는 쿼터니언에서 작동하도록 개선되었습니다.

결합

쿼터니언은 결합 중에 개별 객체로 처리되며 배열 조작에 대한 MATLAB 규칙을 따릅니다.

Q1 = quaternion(1,2,3,4);
Q2 = quaternion(9,8,7,6);

qVector = [Q1,Q2]
qVector = 1x2 quaternion array
     1 + 2i + 3j + 4k     9 + 8i + 7j + 6k

Q3 = quaternion(-1,-2,-3,-4);
Q4 = quaternion(-9,-8,-7,-6);

qMatrix = [qVector;Q3,Q4]
qMatrix = 2x2 quaternion array
     1 + 2i + 3j + 4k     9 + 8i + 7j + 6k
    -1 - 2i - 3j - 4k    -9 - 8i - 7j - 6k

qMultiDimensionalArray(:,:,1) = qMatrix;
qMultiDimensionalArray(:,:,2) = qMatrix
qMultiDimensionalArray = 2x2x2 quaternion array
qMultiDimensionalArray(:,:,1) = 

     1 + 2i + 3j + 4k     9 + 8i + 7j + 6k
    -1 - 2i - 3j - 4k    -9 - 8i - 7j - 6k


qMultiDimensionalArray(:,:,2) = 

     1 + 2i + 3j + 4k     9 + 8i + 7j + 6k
    -1 - 2i - 3j - 4k    -9 - 8i - 7j - 6k

인덱싱

쿼터니언 배열에서 요소에 액세스하거나 요소를 할당하려면 인덱싱을 사용합니다.

qLoc2 = qMultiDimensionalArray(2)
qLoc2 = quaternion
    -1 - 2i - 3j - 4k

인덱스 2의 쿼터니언을 쿼터니언 1로 바꿉니다.

qMultiDimensionalArray(2) = ones("quaternion")
qMultiDimensionalArray = 2x2x2 quaternion array
qMultiDimensionalArray(:,:,1) = 

     1 + 2i + 3j + 4k     9 + 8i + 7j + 6k
     1 + 0i + 0j + 0k    -9 - 8i - 7j - 6k


qMultiDimensionalArray(:,:,2) = 

     1 + 2i + 3j + 4k     9 + 8i + 7j + 6k
    -1 - 2i - 3j - 4k    -9 - 8i - 7j - 6k

형태 변경

쿼터니언 배열의 형태를 변경하려면 reshape 함수를 사용합니다.

qMatReshaped = reshape(qMatrix,4,1)
qMatReshaped = 4x1 quaternion array
     1 + 2i + 3j + 4k
    -1 - 2i - 3j - 4k
     9 + 8i + 7j + 6k
    -9 - 8i - 7j - 6k

전치

쿼터니언 벡터와 행렬을 전치하려면 transpose 함수를 사용합니다.

qMatTransposed = transpose(qMatrix)
qMatTransposed = 2x2 quaternion array
     1 + 2i + 3j + 4k    -1 - 2i - 3j - 4k
     9 + 8i + 7j + 6k    -9 - 8i - 7j - 6k

치환

쿼터니언 벡터, 행렬, 다차원 배열을 치환하려면 permute 함수를 사용합니다.

qMultiDimensionalArray
qMultiDimensionalArray = 2x2x2 quaternion array
qMultiDimensionalArray(:,:,1) = 

     1 + 2i + 3j + 4k     9 + 8i + 7j + 6k
     1 + 0i + 0j + 0k    -9 - 8i - 7j - 6k


qMultiDimensionalArray(:,:,2) = 

     1 + 2i + 3j + 4k     9 + 8i + 7j + 6k
    -1 - 2i - 3j - 4k    -9 - 8i - 7j - 6k

qMatPermute = permute(qMultiDimensionalArray,[3,1,2])
qMatPermute = 2x2x2 quaternion array
qMatPermute(:,:,1) = 

     1 + 2i + 3j + 4k     1 + 0i + 0j + 0k
     1 + 2i + 3j + 4k    -1 - 2i - 3j - 4k


qMatPermute(:,:,2) = 

     9 + 8i + 7j + 6k    -9 - 8i - 7j - 6k
     9 + 8i + 7j + 6k    -9 - 8i - 7j - 6k

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2019b에 개발됨