diff options
author | Eugeniy E. Mikhailov <evgmik@gmail.com> | 2024-11-19 13:40:38 -0500 |
---|---|---|
committer | Eugeniy E. Mikhailov <evgmik@gmail.com> | 2024-11-19 13:40:38 -0500 |
commit | 984d56b4d94bf298a197f1567834451acf49cab9 (patch) | |
tree | fc545b26d7997106a77f0353aa61062f5b77e098 /python_originals/xpxp_to_xxpp.py | |
parent | 268050742bfd920490d90152686178ffba1f6a85 (diff) | |
download | matlab_strawberryfields-984d56b4d94bf298a197f1567834451acf49cab9.tar.gz matlab_strawberryfields-984d56b4d94bf298a197f1567834451acf49cab9.zip |
dir renamev0.1
Diffstat (limited to 'python_originals/xpxp_to_xxpp.py')
-rw-r--r-- | python_originals/xpxp_to_xxpp.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/python_originals/xpxp_to_xxpp.py b/python_originals/xpxp_to_xxpp.py new file mode 100644 index 0000000..01d0bf2 --- /dev/null +++ b/python_originals/xpxp_to_xxpp.py @@ -0,0 +1,26 @@ + +def xpxp_to_xxpp(S): + """Permutes the entries of the input from xpxp ordering to xxpp ordering. + + Args: + S (array): input even dimensional square matrix or vector + + Returns: + (array): permuted matrix or vector + """ + shape = S.shape + n = shape[0] + + if n % 2 != 0: + raise ValueError("The input array is not even-dimensional") + + n = n // 2 + ind = np.arange(2 * n).reshape(-1, 2).T.flatten() + + if len(shape) == 2: + if shape[0] != shape[1]: + raise ValueError("The input matrix is not square") + return S[:, ind][ind] + + return S[ind] + |