# v_qrdivide

## PURPOSE

V_QRDIVIDE divdes two real quaternions q=[q1,q2]

## SYNOPSIS

function q=v_qrdivide(q1,q2)

## DESCRIPTION

    V_QRDIVIDE divdes two real quaternions q=[q1,q2]

     Inputs:

         q1(4,1), q2(4,1)  Two real quaternions in the form [r, i, j, k]' where i^2=j^2=k^2=ijk=-1

     Outputs:

         q(4,1)   Quotient of q1/q2 such that q1=q*q2.
                  Note that q*q2 ~= q2*q since quaternion multiplication does not commute.

## CROSS-REFERENCE INFORMATION

This function calls:

This function is called by:

## SOURCE CODE

    0001 function q=v_qrdivide(q1,q2)
    0002 %V_QRDIVIDE divdes two real quaternions q=[q1,q2]
    0003 %
    0004 % Inputs:
    0005 %
    0006 %     q1(4,1), q2(4,1)  Two real quaternions in the form [r, i, j, k]' where i^2=j^2=k^2=ijk=-1
    0007 %
    0008 % Outputs:
    0009 %
    0010 %     q(4,1)   Quotient of q1/q2 such that q1=q*q2.
    0011 %              Note that q*q2 ~= q2*q since quaternion multiplication does not commute.
    0012
    0013 %      Copyright (C) Mike Brookes 2000-2008
    0014 %      Version: $Id: v_qrdivide.m 10865 2018-09-21 17:22:45Z dmb $
    0015 %
    0016 %   VOICEBOX is a MATLAB toolbox for speech processing.
    0017 %   Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html
    0018 %
    0019 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    0020 %   This program is free software; you can redistribute it and/or modify
    0021 %   it under the terms of the GNU Lesser General Public License as published by
    0022 %   the Free Software Foundation; either version 3 of the License, or
    0023 %   (at your option) any later version.
    0024 %
    0025 %   This program is distributed in the hope that it will be useful,
    0026 %   but WITHOUT ANY WARRANTY; without even the implied warranty of
    0027 %   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    0028 %   GNU Lesser General Public License for more details.
    0029 %
    0030 %   You can obtain a copy of the GNU Lesser General Public License from
    0031 %   https://www.gnu.org/licenses/ .
    0032 %
    0033 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    0034 persistent a b c d
    0035 if isempty(a)
    0036     a=[5 8 9 10 15 13];
    0037     b=[6 7 11 12 14 16];
    0038     c=[1 2 3 4 6 7 11 12 16 14];
    0039     d=[1 2 3 4 5 8 9 10 13 15];
    0040 end
    0041 if nargin<2
    0042     %    just take the inverse of the only input argument
    0043     q=q1/(q1'*q1);
    0044     q(2:4)=-q(2:4);
    0045 else
    0046     %    invert q2 and do a multiply
    0047     q=q2/(q2'*q2);
    0048     q(2:4)=-q(2:4);
    0049     t=q1*q.';
    0050     s=zeros(4,4);
    0051     s(a)=-t(b);
    0052     s(c)=t(d);
    0053     q=sum(s,2);
    0054 end
    0055