Unit quaternion or octonion
Y = unit(X)
unit(X) divides each element of its argument by its modulus to return quaternions with unit modulus.
>> unit(quaternion(1,2,3,4)) ans = 0.1826 + 0.3651 * I + 0.5477 * J + 0.7303 * KA unit pure quaternion is a root of -1, whether the quaternion is real or complex:
>> q = unit(randv) q = 0.6552 * I - 0.2884 * J + 0.6983 * K >> q.^2 ans = -1 + 0 * I + 0 * J + 0 * K >> q = unit(complex(randv, randv)) q = (0.9195+0.0758i) * I + (0.00383+0.2233i) * J + (0.4813-0.1466i) * K >> q.^2 ans = (-1+8.327e-17i) + (0) * I + (0) * J + (0) * K