# rotation basis (Skew Symmetric)
# E = np.array([[0, -1.], [1., 0]])
# warping basis (Fourier)
p = 20
f_basis = np.zeros((TT, p))
for i in range(0, int(p/2)):
    f_basis[:, 2*i] = 1/np.sqrt(np.pi) * np.sin(2*np.pi*(i+1)*time)
    f_basis[:, 2*i + 1] = 1/np.sqrt(np.pi) * np.cos(2*np.pi*(i+1)*time)

itr = 0
max_val = np.zeros(max_itr+1)
while itr <= max_itr:
    # inner product value
    A = np.zeros(m)
    for i in range(0, m):
        A[i] = fs.innerprod_q2(qtilde, nu[:, :, i])

    # form gradient for rotation
    # B = np.zeros((n, n, m))
    # for i in range(0, m):
    #     B[:, :, i] = cf.innerprod_q2(E.dot(qtilde), nu[:, :, i]) * E

    # tmp1 = np.sum(np.exp(alpha + A))
    # tmp2 = np.sum(np.exp(alpha + A) * B, axis=2)
    # hO = np.sum(y * B, axis=2) - (tmp2 / tmp1)
    # O_new = O_old.dot(expm(deltaO * hO))

    theta = np.arccos(O_old[0, 0])
    Ograd = np.array([(-1*np.sin(theta), -1*np.cos(theta)),
                     (np.cos(theta), -1*np.sin(theta))])
    B = np.zeros(m)
Exemple #2
0
O = np.eye(n)
O_old = O.copy()
gam_old = gam.copy()
qtilde = q.copy()
# warping basis (Fourier)
p = 20
f_basis = np.zeros((TT, p))
for i in range(0, int(p/2)):
    f_basis[:, 2*i] = 1/np.sqrt(np.pi) * np.sin(2*np.pi*(i+1)*time)
    f_basis[:, 2*i + 1] = 1/np.sqrt(np.pi) * np.cos(2*np.pi*(i+1)*time)

itr = 0
max_val = np.zeros(max_itr+1)
while itr <= max_itr:
    # inner product value
    A = fs.innerprod_q2(qtilde, nu)

    # form gradient for rotation
    # B = np.zeros((n, n, m))
    # for i in range(0, m):
    #     B[:, :, i] = cf.innerprod_q2(E.dot(qtilde), nu[:, :, i]) * E

    # tmp1 = np.sum(np.exp(alpha + A))
    # tmp2 = np.sum(np.exp(alpha + A) * B, axis=2)
    # hO = np.sum(y * B, axis=2) - (tmp2 / tmp1)
    # O_new = O_old.dot(expm(deltaO * hO))

    theta = np.arccos(O_old[0, 0])
    Ograd = np.array([(-1*np.sin(theta), -1*np.cos(theta)),
                     (np.cos(theta), -1*np.sin(theta))])
    B = fs.innerprod_q2(Ograd.dot(qtilde), nu)