Update figures and docs: OMA naming, uniform legends, TikZ Fig. 1 source
- Rename the orthogonal comparison scheme OFDMA -> OMA in docs and figure legends (data keys keep ofdma) - Legend labels normalized to the paper dictionary (OMA, SFDMA, UWCA (proposed)) - New TikZ-generated system overview figure with text-consistent notation (soft decoder masks m-tilde, queries q_u, sharpness eta) - Regenerated fig_fair, fig_resorth, fig_realdata_c, fig_async, fig_dynusers; fig_ser_all legend patched
This commit is contained in:
@@ -70,7 +70,7 @@ Each study script is self-contained and writes its JSON into
|
|||||||
inequality in the manuscript with standalone numpy code (no experiment code
|
inequality in the manuscript with standalone numpy code (no experiment code
|
||||||
reused): the relevance identity, the mutual-information correlation, the
|
reused): the relevance identity, the mutual-information correlation, the
|
||||||
subspace ceiling, the LMMSE receiver against an empirical Wiener solution
|
subspace ceiling, the LMMSE receiver against an empirical Wiener solution
|
||||||
(0.1% MSE agreement; the blind form matches the OFDMA cosine to machine
|
(0.1% MSE agreement; the blind form matches the OMA cosine to machine
|
||||||
precision), and the surrogate bound used in the appendix (uniform constant
|
precision), and the surrogate bound used in the appendix (uniform constant
|
||||||
0.97). Results: `experiments/verification/math_verify.json`.
|
0.97). Results: `experiments/verification/math_verify.json`.
|
||||||
|
|
||||||
|
|||||||
+8
-8
@@ -36,7 +36,7 @@ evaluation uses 150-200 Monte Carlo batches of 64 per point.
|
|||||||
channel gains, the manuscript's Proposition on optimal linear receivers),
|
channel gains, the manuscript's Proposition on optimal linear receivers),
|
||||||
and `tdma_proj` (random orthonormal 16-dim projection per user — an
|
and `tdma_proj` (random orthonormal 16-dim projection per user — an
|
||||||
arbitrary orthogonal partition).
|
arbitrary orthogonal partition).
|
||||||
- **Key results.** lmmse_blind = OFDMA at every SNR in all scenarios
|
- **Key results.** lmmse_blind = OMA at every SNR in all scenarios
|
||||||
(SER 0.509 vs 0.508 @10 dB HIGH), and tdma_proj and SFDMA coincide with
|
(SER 0.509 vs 0.508 @10 dB HIGH), and tdma_proj and SFDMA coincide with
|
||||||
them — the ceiling binds every correlation-blind receiver. HIGH @20 dB:
|
them — the ceiling binds every correlation-blind receiver. HIGH @20 dB:
|
||||||
blind 0.327 -> UWCA 0.110 -> genie 0.044, so UWCA recovers 77% of the
|
blind 0.327 -> UWCA 0.110 -> genie 0.044, so UWCA recovers 77% of the
|
||||||
@@ -95,16 +95,16 @@ evaluation uses 150-200 Monte Carlo batches of 64 per point.
|
|||||||
- **Setup.** Per-user integer offsets delta_u ~ U{0..Delta} symbols,
|
- **Setup.** Per-user integer offsets delta_u ~ U{0..Delta} symbols,
|
||||||
Delta in {0,1,2,4,8}, shift each user's transmitted block within the
|
Delta in {0,1,2,4,8}, shift each user's transmitted block within the
|
||||||
frame (edge energy lost). Conditions: uncorrected reception (UWCA and
|
frame (edge energy lost). Conditions: uncorrected reception (UWCA and
|
||||||
OFDMA), block-wise realignment using pilot-estimated offsets (each
|
OMA), block-wise realignment using pilot-estimated offsets (each
|
||||||
user's block region shifted back individually), and realignment with a
|
user's block region shifted back individually), and realignment with a
|
||||||
deliberately impaired estimator (+-1 symbol on 20% of users).
|
deliberately impaired estimator (+-1 symbol on 20% of users).
|
||||||
- **Key results.** Uncorrected offsets are catastrophic for *every*
|
- **Key results.** Uncorrected offsets are catastrophic for *every*
|
||||||
embedding-level scheme (one symbol: UWCA 0.26 -> 0.73, OFDMA 0.51 ->
|
embedding-level scheme (one symbol: UWCA 0.26 -> 0.73, OMA 0.51 ->
|
||||||
0.76), because i.i.d. embedding coordinates fully decorrelate under a
|
0.76), because i.i.d. embedding coordinates fully decorrelate under a
|
||||||
one-symbol misalignment — synchronization is a shared physical-layer
|
one-symbol misalignment — synchronization is a shared physical-layer
|
||||||
prerequisite, not a property of the multiple-access mechanism. With
|
prerequisite, not a property of the multiple-access mechanism. With
|
||||||
realignment the degradation is gradual (0.266 -> 0.304 @Delta=1, 0.455
|
realignment the degradation is gradual (0.266 -> 0.304 @Delta=1, 0.455
|
||||||
@Delta=8) and realigned UWCA stays below realigned OFDMA (0.536-0.638)
|
@Delta=8) and realigned UWCA stays below realigned OMA (0.536-0.638)
|
||||||
at every offset. The impaired estimator costs 0.14 SER: whole-symbol
|
at every offset. The impaired estimator costs 0.14 SER: whole-symbol
|
||||||
residuals sacrifice the affected block, so timing must be held to
|
residuals sacrifice the affected block, so timing must be held to
|
||||||
sub-symbol accuracy (which the closed-loop timing advance provides).
|
sub-symbol accuracy (which the closed-loop timing advance provides).
|
||||||
@@ -119,10 +119,10 @@ evaluation uses 150-200 Monte Carlo batches of 64 per point.
|
|||||||
two-layer tanh view networks g_u per user (seed 7): users share the
|
two-layer tanh view networks g_u per user (seed 7): users share the
|
||||||
scene s only through independent nonlinear transformations. Cases:
|
scene s only through independent nonlinear transformations. Cases:
|
||||||
shared scene vs independent scenes (control). Schemes: trained UWCA,
|
shared scene vs independent scenes (control). Schemes: trained UWCA,
|
||||||
OFDMA, NOMA-SIC, and the scalar-parameterized genie LMMSE fed the
|
OMA, NOMA-SIC, and the scalar-parameterized genie LMMSE fed the
|
||||||
*measured* mean pairwise cosine.
|
*measured* mean pairwise cosine.
|
||||||
- **Key results.** The linear correlation is destroyed (mean cosine
|
- **Key results.** The linear correlation is destroyed (mean cosine
|
||||||
0.006), so the genie LMMSE collapses onto the ceiling (0.515 vs OFDMA
|
0.006), so the genie LMMSE collapses onto the ceiling (0.515 vs OMA
|
||||||
0.518 @10 dB) — no scalar or linear receiver can represent the shared
|
0.518 @10 dB) — no scalar or linear receiver can represent the shared
|
||||||
structure. UWCA still attains 0.363 @10 dB / 0.220 @20 dB. The
|
structure. UWCA still attains 0.363 @10 dB / 0.220 @20 dB. The
|
||||||
independent-scene control (UWCA 0.441) isolates the manifold-prior
|
independent-scene control (UWCA 0.441) isolates the manifold-prior
|
||||||
@@ -138,11 +138,11 @@ evaluation uses 150-200 Monte Carlo batches of 64 per point.
|
|||||||
- **Setup.** E1's trained HIGH decoder; per-sample Pearson correlation
|
- **Setup.** E1's trained HIGH decoder; per-sample Pearson correlation
|
||||||
across the 64 dimensions, averaged over user pairs and 100x64 samples
|
across the 64 dimensions, averaged over user pairs and 100x64 samples
|
||||||
per SNR, for: input embeddings, decoded embeddings, and decoding
|
per SNR, for: input embeddings, decoded embeddings, and decoding
|
||||||
residuals r_u = e_hat_u - e_u; OFDMA decoded correlation as reference.
|
residuals r_u = e_hat_u - e_u; OMA decoded correlation as reference.
|
||||||
- **Key results.** The decoded-embedding correlation rises with SNR from
|
- **Key results.** The decoded-embedding correlation rises with SNR from
|
||||||
0.31 toward the 0.39 input level (the shared content is delivered, not
|
0.31 toward the 0.39 input level (the shared content is delivered, not
|
||||||
stripped), while the residual correlation falls 0.23 -> 0.14 (2.8x below
|
stripped), while the residual correlation falls 0.23 -> 0.14 (2.8x below
|
||||||
the input level) — the emergent residual orthogonality. OFDMA's decoded
|
the input level) — the emergent residual orthogonality. OMA's decoded
|
||||||
correlation is 0.00 at every SNR: orthogonal access erases the
|
correlation is 0.00 at every SNR: orthogonal access erases the
|
||||||
inter-user semantic structure from the delivered embeddings.
|
inter-user semantic structure from the delivered embeddings.
|
||||||
- **Artifacts.** `experiments/e6_residual_orth.py` ->
|
- **Artifacts.** `experiments/e6_residual_orth.py` ->
|
||||||
|
|||||||
@@ -61,11 +61,11 @@ axs = [f.add_axes([0.115, AXB, 0.365, AXH]),
|
|||||||
f.add_axes([0.615, AXB, 0.365, AXH])]
|
f.add_axes([0.615, AXB, 0.365, AXH])]
|
||||||
for ax, sc, ttl in zip(axs, ["HIGH", "MIX"], ["(a) HIGH", "(b) MIX"]):
|
for ax, sc, ttl in zip(axs, ["HIGH", "MIX"], ["(a) HIGH", "(b) MIX"]):
|
||||||
v = d["scenarios"][sc]
|
v = d["scenarios"][sc]
|
||||||
ax.semilogy(snr, v["ofdma"]["ser"], "s--", color=C["ofdma"], label="OFDMA")
|
ax.semilogy(snr, v["ofdma"]["ser"], "s--", color=C["ofdma"], label="OMA")
|
||||||
ax.semilogy(snr, v["lmmse_blind"]["ser"], "v-", color=C["blind"],
|
ax.semilogy(snr, v["lmmse_blind"]["ser"], "v-", color=C["blind"],
|
||||||
markevery=(1, 2), label="LMMSE-blind")
|
markevery=(1, 2), label="LMMSE-blind")
|
||||||
ax.semilogy(snr, v["noma"]["ser"], "^-.", color=C["noma"], label="NOMA-SIC")
|
ax.semilogy(snr, v["noma"]["ser"], "^-.", color=C["noma"], label="NOMA-SIC")
|
||||||
ax.semilogy(snr, v["uwca"]["ser"], "o-", color=C["uwca"], label="UWCA (prop.)")
|
ax.semilogy(snr, v["uwca"]["ser"], "o-", color=C["uwca"], label="UWCA (proposed)")
|
||||||
ax.semilogy(snr, v["lmmse_genie"]["ser"], "d:", color=C["genie"],
|
ax.semilogy(snr, v["lmmse_genie"]["ser"], "d:", color=C["genie"],
|
||||||
label="LMMSE-genie")
|
label="LMMSE-genie")
|
||||||
ax.set_xlabel("SNR (dB)")
|
ax.set_xlabel("SNR (dB)")
|
||||||
@@ -86,7 +86,7 @@ ax.plot(snr, d["uwca"]["rho_decoded"], "o-", color=C["uwca"],
|
|||||||
ax.plot(snr, d["uwca"]["rho_residual"], "s-", color=C["extra"],
|
ax.plot(snr, d["uwca"]["rho_residual"], "s-", color=C["extra"],
|
||||||
label=r"UWCA residual $\rho(\mathbf{r}_u,\mathbf{r}_v)$")
|
label=r"UWCA residual $\rho(\mathbf{r}_u,\mathbf{r}_v)$")
|
||||||
ax.plot(snr, d["ofdma"]["rho_decoded"], "^:", color=C["ofdma"],
|
ax.plot(snr, d["ofdma"]["rho_decoded"], "^:", color=C["ofdma"],
|
||||||
label=r"OFDMA decoded")
|
label=r"OMA decoded")
|
||||||
ax.set_xlabel("SNR (dB)")
|
ax.set_xlabel("SNR (dB)")
|
||||||
ax.set_ylabel("Pearson correlation")
|
ax.set_ylabel("Pearson correlation")
|
||||||
ax.set_xlim(0, 20)
|
ax.set_xlim(0, 20)
|
||||||
@@ -122,11 +122,11 @@ cur = d["curves"]
|
|||||||
ax.plot(dm, [a[0] for a in cur["uwca_uncorrected"]["10.0"]], "o--",
|
ax.plot(dm, [a[0] for a in cur["uwca_uncorrected"]["10.0"]], "o--",
|
||||||
color=C["uwca"], alpha=0.5, label="UWCA, uncorrected")
|
color=C["uwca"], alpha=0.5, label="UWCA, uncorrected")
|
||||||
ax.plot(dm, [a[0] for a in cur["ofdma_uncorrected"]["10.0"]], "s--",
|
ax.plot(dm, [a[0] for a in cur["ofdma_uncorrected"]["10.0"]], "s--",
|
||||||
color=C["ofdma"], alpha=0.5, label="OFDMA, uncorrected")
|
color=C["ofdma"], alpha=0.5, label="OMA, uncorrected")
|
||||||
ax.plot(dm, [a[0] for a in cur["uwca_corrected"]["10.0"]], "o-",
|
ax.plot(dm, [a[0] for a in cur["uwca_corrected"]["10.0"]], "o-",
|
||||||
color=C["uwca"], label="UWCA, realigned")
|
color=C["uwca"], label="UWCA, realigned")
|
||||||
ax.plot(dm, [a[0] for a in cur["ofdma_corrected"]["10.0"]], "s-",
|
ax.plot(dm, [a[0] for a in cur["ofdma_corrected"]["10.0"]], "s-",
|
||||||
color=C["ofdma"], label="OFDMA, realigned")
|
color=C["ofdma"], label="OMA, realigned")
|
||||||
ax.plot(dm, [a[0] for a in cur["uwca_corrected_err20"]["10.0"]], "^-.",
|
ax.plot(dm, [a[0] for a in cur["uwca_corrected_err20"]["10.0"]], "^-.",
|
||||||
color=C["extra"], label="UWCA, realigned (20% est. err.)")
|
color=C["extra"], label="UWCA, realigned (20% est. err.)")
|
||||||
ax.set_xlabel(r"maximum timing offset $\Delta$ (symbols)")
|
ax.set_xlabel(r"maximum timing offset $\Delta$ (symbols)")
|
||||||
|
|||||||
Binary file not shown.
Executable
+91
@@ -0,0 +1,91 @@
|
|||||||
|
\documentclass[tikz,border=4pt]{standalone}
|
||||||
|
\usepackage{amsmath,amssymb,bm}
|
||||||
|
\usetikzlibrary{positioning,shapes.geometric,decorations.pathreplacing,calc,fit,backgrounds}
|
||||||
|
\begin{document}
|
||||||
|
\begin{tikzpicture}[
|
||||||
|
font=\small,
|
||||||
|
box/.style={draw,rounded corners=1pt,minimum width=7.5mm,minimum height=5.5mm,inner sep=1.5pt},
|
||||||
|
enc/.style={box,fill=yellow!35},
|
||||||
|
chan/.style={draw,diamond,aspect=1.4,fill=gray!25,inner sep=0.8pt},
|
||||||
|
rxb/.style={box},
|
||||||
|
mult/.style={draw,circle,inner sep=0.4pt,minimum size=4mm},
|
||||||
|
sum/.style={draw,rounded corners=2.5mm,fill=cyan!20,minimum width=12mm,minimum height=26mm},
|
||||||
|
dec/.style={draw,rounded corners=2pt,minimum width=47mm,minimum height=6mm,inner sep=2pt},
|
||||||
|
lbl/.style={font=\small\bfseries,align=center},
|
||||||
|
arr/.style={-stealth,semithick}]
|
||||||
|
|
||||||
|
% ---------------- left panel: transmitters / channel ----------------
|
||||||
|
\foreach \i/\yy in {1/1.7, 2/0.45}{
|
||||||
|
\node[box] (x\i) at (0,\yy) {$\mathbf{x}_{\i}$};
|
||||||
|
\node[enc,right=4.5mm of x\i] (f\i) {$f_\phi$};
|
||||||
|
\node[mult,right=5.5mm of f\i] (o\i) {$\odot$};
|
||||||
|
\node[chan,right=5mm of o\i] (h\i) {$\tilde h_{\i}$};
|
||||||
|
\node[rxb,right=5mm of h\i] (y\i) {$\mathbf{y}_{\i}$};
|
||||||
|
\draw[arr] (x\i) -- (f\i);
|
||||||
|
\draw[arr] (f\i) -- node[above,font=\footnotesize]{$\mathbf{e}_{\i}$} (o\i);
|
||||||
|
\draw[arr] (o\i) -- (h\i);
|
||||||
|
\draw[arr] (h\i) -- (y\i);
|
||||||
|
\node[below=1.8mm of o\i,font=\footnotesize] (m\i) {$\mathbf{m}_{\i}$};
|
||||||
|
\draw[arr] (m\i) -- (o\i);
|
||||||
|
}
|
||||||
|
\node[box] (xU) at (0,-1.2) {$\mathbf{x}_{U}$};
|
||||||
|
\node[enc,right=4.5mm of xU] (fU) {$f_\phi$};
|
||||||
|
\node[mult,right=5.5mm of fU] (oU) {$\odot$};
|
||||||
|
\node[chan,right=5mm of oU] (hU) {$\tilde h_{U}$};
|
||||||
|
\node[rxb,right=5mm of hU] (yU) {$\mathbf{y}_{U}$};
|
||||||
|
\draw[arr] (xU) -- (fU);
|
||||||
|
\draw[arr] (fU) -- node[above,font=\footnotesize]{$\mathbf{e}_{U}$} (oU);
|
||||||
|
\draw[arr] (oU) -- (hU);
|
||||||
|
\draw[arr] (hU) -- (yU);
|
||||||
|
\node[below=1.8mm of oU,font=\footnotesize] (mU) {$\mathbf{m}_{U}$};
|
||||||
|
\draw[arr] (mU) -- (oU);
|
||||||
|
\foreach \c in {x,f,o,h,y}{\node at ($(\c 2)!0.5!(\c U)$) {$\vdots$};}
|
||||||
|
|
||||||
|
% superposition
|
||||||
|
\node[sum,right=9mm of y2.east,yshift=-3.5mm] (sig)
|
||||||
|
{$\displaystyle\sum_{v=1}^{U}$};
|
||||||
|
\draw[arr] (y1.east) -- (y1.east -| sig.west);
|
||||||
|
\draw[arr] (y2.east) -- (y2.east -| sig.west);
|
||||||
|
\draw[arr] (yU.east) -- (yU.east -| sig.west);
|
||||||
|
|
||||||
|
% bottom labels
|
||||||
|
\node[lbl,below=5.5mm of fU] {Transmitters\\(shared $f_\phi$)};
|
||||||
|
\node[lbl,below=5.5mm of hU] {Rayleigh\\Channel};
|
||||||
|
\node[lbl] at ([yshift=-4.5mm]sig.south) {Received Signal\\(Superposition $\tilde{\mathbf{y}}$)};
|
||||||
|
|
||||||
|
% ---------------- right panel: UWCA decoder ----------------
|
||||||
|
\node[dec,fill=violet!15,right=15mm of sig.east,yshift=19mm] (mask)
|
||||||
|
{Soft Masks $\{\tilde{\mathbf{m}}_i\}_{i=1}^{U}$};
|
||||||
|
\node[dec,fill=blue!12,below=2.2mm of mask,align=center] (proj)
|
||||||
|
{K/V Projection $(\mathbf{W}_K,\mathbf{W}_V)$\\[-1pt] Queries $\{\mathbf{q}_u\}$};
|
||||||
|
\node[dec,fill=orange!30,below=2.2mm of proj,minimum height=9mm,align=center] (attn)
|
||||||
|
{Scaled Dot-Product Attention\\[-1pt]
|
||||||
|
{\footnotesize $\alpha_{u,i}=\mathrm{softmax}\big(\eta\,\mathbf{q}_u^{\top}\mathbf{k}_i/\sqrt{d_k}\big)$}};
|
||||||
|
\node[mult,below=2.2mm of attn] (plus) {$\oplus$};
|
||||||
|
\node[dec,fill=green!20,below=2.2mm of plus] (norm) {$\ell_2$-Normalize};
|
||||||
|
\node[dec,fill=green!30,below=2.2mm of norm] (out)
|
||||||
|
{$\hat{\mathbf{e}}_1,\ \hat{\mathbf{e}}_2,\ \ldots,\ \hat{\mathbf{e}}_U$};
|
||||||
|
\draw[arr] (mask) -- (proj);
|
||||||
|
\draw[arr] (proj) -- (attn);
|
||||||
|
\draw[arr] (attn) -- (plus);
|
||||||
|
\draw[arr] (plus) -- (norm);
|
||||||
|
\draw[arr] (norm) -- (out);
|
||||||
|
\draw[arr] (sig.east) -- node[above,font=\footnotesize]{$\tilde{\mathbf{y}}$} ++(6mm,0) |- (mask.west);
|
||||||
|
\draw[arr,dashed,blue] (mask.east) -- ++(4mm,0) |- (plus.east)
|
||||||
|
node[pos=0.25,right,font=\footnotesize,align=left]{skip:\\$\tilde{\mathbf{y}}\odot\tilde{\mathbf{m}}_u$};
|
||||||
|
|
||||||
|
% decoder panel frame
|
||||||
|
\begin{scope}[on background layer]
|
||||||
|
\node[draw=blue!60,dashed,rounded corners=2mm,fill=blue!5,fit=(mask)(out)(attn),
|
||||||
|
inner xsep=10mm,inner ysep=2.5mm] (panel) {};
|
||||||
|
\end{scope}
|
||||||
|
\node[anchor=south,font=\small\bfseries\color{blue!60!black},inner sep=1.5pt] at (panel.north)
|
||||||
|
{UWCA Decoder (per-user, shared weights $\theta$)};
|
||||||
|
|
||||||
|
% MAML brace
|
||||||
|
\draw[decorate,decoration={brace,mirror,amplitude=2mm},blue!60!black,thick]
|
||||||
|
([yshift=-1.2mm]panel.south west) -- ([yshift=-1.2mm]panel.south east)
|
||||||
|
node[midway,below=2mm,font=\small\color{blue!60!black}]
|
||||||
|
{MAML meta-training over SNR tasks $\{\mathcal{T}_k\}_{k=1}^{K}$};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{document}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,7 +2,7 @@
|
|||||||
for HIGH/LOW/MIX, parallel to the synthetic Fig. 2.
|
for HIGH/LOW/MIX, parallel to the synthetic Fig. 2.
|
||||||
|
|
||||||
Curves per panel:
|
Curves per panel:
|
||||||
- OFDMA [division], SFDMA [feature div.], NOMA-SIC (analytical baselines)
|
- OMA, SFDMA, NOMA-SIC (analytical baselines)
|
||||||
- UWCA (analytical) : oracle-beta cross-attention (relevance SUPPLIED) -- dotted
|
- UWCA (analytical) : oracle-beta cross-attention (relevance SUPPLIED) -- dotted
|
||||||
- UWCA w/o MAML : decoder TRAINED on real digits, no meta-learning (from realdata_train.json)
|
- UWCA w/o MAML : decoder TRAINED on real digits, no meta-learning (from realdata_train.json)
|
||||||
- UWCA w/ MAML : decoder TRAINED on real digits with MAML (proposed) -- hollow circles
|
- UWCA w/ MAML : decoder TRAINED on real digits with MAML (proposed) -- hollow circles
|
||||||
@@ -104,8 +104,8 @@ fig, ax = plt.subplots(1, 3, figsize=(11, 3.4))
|
|||||||
betas = {s: emp_beta(SCEN[s])[~np.eye(U, dtype=bool)].mean() for s in SCEN}
|
betas = {s: emp_beta(SCEN[s])[~np.eye(U, dtype=bool)].mean() for s in SCEN}
|
||||||
for j, s in enumerate(['HIGH', 'LOW', 'MIX']):
|
for j, s in enumerate(['HIGH', 'LOW', 'MIX']):
|
||||||
a = ax[j]
|
a = ax[j]
|
||||||
a.plot(SNR, ana[s]['OFDMA'], 's--', color=COL['OFDMA'], lw=2, ms=5, label='OFDMA [division]')
|
a.plot(SNR, ana[s]['OFDMA'], 's--', color=COL['OFDMA'], lw=2, ms=5, label='OMA')
|
||||||
a.plot(SNR, ana[s]['SFDMA'], 'v:', color=COL['SFDMA'], lw=2, ms=5, mfc='none', label='SFDMA [feature div.]')
|
a.plot(SNR, ana[s]['SFDMA'], 'v:', color=COL['SFDMA'], lw=2, ms=5, mfc='none', label='SFDMA')
|
||||||
a.plot(SNR, ana[s]['NOMA-SIC'], '^-.', color=COL['NOMA-SIC'], lw=2, ms=5, label='NOMA-SIC')
|
a.plot(SNR, ana[s]['NOMA-SIC'], '^-.', color=COL['NOMA-SIC'], lw=2, ms=5, label='NOMA-SIC')
|
||||||
a.plot(SNR, ana[s]['UWCA (analytical)'], ':', color=COL['UWCA (analytical)'], lw=2.4, label='UWCA (analytical)')
|
a.plot(SNR, ana[s]['UWCA (analytical)'], ':', color=COL['UWCA (analytical)'], lw=2.4, label='UWCA (analytical)')
|
||||||
a.plot(SNR, trained[s]['UWCA w/ MAML'], 'o-', color=COL['UWCA w/ MAML'], lw=1.6, ms=6, mfc='none', mew=1.6, label='UWCA (trained)')
|
a.plot(SNR, trained[s]['UWCA w/ MAML'], 'o-', color=COL['UWCA w/ MAML'], lw=1.6, ms=6, mfc='none', mew=1.6, label='UWCA (trained)')
|
||||||
|
|||||||
Reference in New Issue
Block a user