Source code for monalisa.coil._coil_sense_pinv
"""Port of src/coilSense/map/bmCoilSense_pinv.m."""
import numpy as np
from monalisa._mat import single
from monalisa.array._block_reshape import block_reshape
from monalisa.array._col_reshape import col_reshape
[docs]
def coil_sense_pinv(C, x0, n_u):
"""Coil combination ``sum(conj(C) .* x0, 2) ./ sum(abs(C).^2, 2)`` in single precision."""
C = single(col_reshape(C, n_u))
x0 = single(col_reshape(x0, n_u))
with np.errstate(divide="ignore", invalid="ignore"):
x = np.sum(np.conj(C) * x0, axis=1, keepdims=True) / np.sum(np.abs(C) ** 2, axis=1, keepdims=True)
return block_reshape(x, n_u)