working 2-port capture

This commit is contained in:
2025-07-07 20:13:59 -06:00
parent 6f947a28fa
commit f021780971
2 changed files with 15 additions and 18 deletions

View File

@ -302,19 +302,23 @@ class Charon:
return np.mean(data[1] / data[0])
def sweep_b_over_a(self):
def sweep_b_over_a(self, **kwargs):
s = xr.DataArray(
np.zeros(
len(self.frequency),
[len(self.frequency), len(self.ports), len(self.ports)],
dtype=np.complex128,
),
dims=["frequency"],
dims=["frequency", "m", "n"],
coords=dict(
frequency=self.frequency,
m=list(self.ports),
n=list(self.ports),
),
)
for frequency in self.frequency:
s.loc[dict(frequency=frequency)] = self.get_b_over_a(frequency=frequency)
for m in s.m.data:
for n in s.n.data:
self.set_switches(b=m - 1, a=n - 1)
s.loc[dict(m=m, n=n)] = self.vna_capture(frequency=self.frequency, **kwargs)
return s
def vna_capture(self, frequency: npt.ArrayLike, callback: Callable[int, int] | None = None):

View File

@ -8,24 +8,17 @@ from charon_vna.vna import Charon
frequency = np.linspace(80e6, 280e6, 31)
# %%
vna = Charon(frequency=frequency)
vna = Charon(frequency=frequency, ports=[1, 2])
# %%
vna.set_switches(b=0, a=0)
s11 = vna.vna_capture(frequency)
vna.set_switches(b=1, a=0)
s21 = vna.vna_capture(frequency)
vna.set_switches(b=1, a=1)
s22 = vna.vna_capture(frequency)
vna.set_switches(b=0, a=1)
s12 = vna.vna_capture(frequency)
s = vna.sweep_b_over_a()
# %%
plt.plot(s11.frequency, 20 * np.log10(np.abs(s11)), label="$S_{11}$")
plt.plot(s21.frequency, 20 * np.log10(np.abs(s21)), label="$S_{21}$")
plt.plot(s22.frequency, 20 * np.log10(np.abs(s22)), label="$S_{22}$")
plt.plot(s12.frequency, 20 * np.log10(np.abs(s12)), label="$S_{12}$")
for m in s.m.data:
for n in s.n.data:
plt.plot(s.frequency, 20 * np.log10(np.abs(s.sel(m=m, n=n))), label="$S_{" + str(m) + str(n) + "}$")
plt.grid(True)
plt.legend()
# %%