// normalize for far-field if requested
if (ff):
X -= self.center
Xn = np.sqrt(np.sum(X**2, axis=0))
X *= constants.get("ffdist")/Xn
X += self.center
D = distance(self.R, X)
omega = 2 * np.pi * frequency
if attn:
// TO DO 1: This will mean slightly different absolute value for
// every entry, even within the same steering vector. Perhaps a
// better paradigm is far-field with phase carrier.
return 1. / (4 * np.pi) / D * np.exp(-1j * omega * D / constants.get("c"))
else:
return np.exp(-1j * omega * D / constants.get("c"))
After Change
if (ff):
// unit vectors pointing towards sources
p = (X - self.center)
p /= np.linalg.norm(p)
// The projected microphone distances on the unit vectors
D = np.dot(self.R.T, p)
// subtract minimum in each column
D -= np.min(D)
else:
D = distance(self.R, X)
phase = np.exp(-1j * omega * D / constants.get("c"))
if attn:
// TO DO 1: This will mean slightly different absolute value for
// every entry, even within the same steering vector. Perhaps a