working 2-port capture
This commit is contained in:
@ -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):
|
||||
|
@ -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()
|
||||
|
||||
|
||||
# %%
|
||||
|
Reference in New Issue
Block a user