Also, to answer the question about how to grab the matrices of an MPS tensor, here is a quick script to give you and idea for how to do it:
using ITensors
N = 5
s = siteinds("S=1/2", N)
psi = randomMPS(s, 4) # MPS with maximum bond dimension 4
A3 = psi[3] # Grab the 3rd MPS tensor (order 3 ITensor)
A3_1 = A3 * setelt(s[3] => 1) # Project onto the 1st MPS matrix (order 2 ITensor)
A3_2 = A3 * setelt(s[3] => 2) # Project onto the 2nd MPS matrix (order 2 ITensor)
Then, you can view the elements of those ITensors. The ITensor A3_1 and A3_2 will have the following indices:
l2 = linkind(psi, 2)
l3 = linkind(psi, 3)
@show hassameinds(A3_1, (l2, l3))
@show hassameinds(A3_2, (l2, l3))
You can print them, index into them with operations like `A3_1[l2 => 1, l3 => 1]`, SVD them with operations like `svd(A3_1, l2)`, etc. Please let us know what kind of numerical operations you are interested in performing on the MPS tensors, and we can help you out.
-Matt