function [phiIn, mu0In, sigma0In, QIn] = iit_lds(P, S_bar, V, RR, Tr, sigma_sq) K = size(V,1)/3; [T, J] = size(P); T = T/2; y = zeros(2*J, T); P_hat_t = zeros(2*J, 1); M_t = zeros(2*J, K); for t=1:T, Pt = [P(t,:) P(t+T,:)]'; Rt = [RR(t,:); RR(t+T,:)]; P_hat_t(1:J,1) = (Rt(1,:)*S_bar)'; P_hat_t(J+1:end,1) = (Rt(2,:)*S_bar)'; for kk = 1:K, M_t(1:J, kk) = (Rt(1,:)*V(1+(kk-1)*3:kk*3, :))'; M_t(J+1:end, kk) = (Rt(2,:)*V(1+(kk-1)*3:kk*3, :))'; end M{t} = M_t; y(:, t) = Pt - P_hat_t; end A = eye(2*J)./sigma_sq; for t=1:T, temp1 = A*M{t}; temp2 = A - temp1*inv(eye(K)+M{t}'*temp1)*temp1'; temp1b(t,:) = y(:,t)'*temp2*M{t}; end mu0In = mean(temp1b)'; Q = cov(temp1b); QIn = Q; t1 = temp1b(1:T-1,:); t2 = temp1b(2:T,:); phiIn = inv(t1'*t1+Q)*t1'*t2; sigma0In = QIn;