Main configuration d=256, L=64: all data, figures and checks re-run

Every OMA reference takes the L/16 combining gain so the comparison
stays resource matched, four hardcoded copies of the configuration are
replaced by MAIN_D or the main curve, and stage_J's K-by-L Gaussian
draw becomes its exact scalar Beta equivalent.
This commit is contained in:
KiHoLee
2026-08-18 14:40:48 +09:00
parent fef629a218
commit 8f26bf9bc9
34 changed files with 691 additions and 544 deletions
+8 -9
View File
@@ -1,12 +1,12 @@
# -*- coding: utf-8 -*-
"""Where does the legitimate advantage over OMA go?
An ideal M-ary receiver at the main configuration should reach 0.199 at
10 dB against the 0.275 of resource-matched OMA, a factor of 1.38, while
the system measures 0.257, a factor of 1.07. This script splits the
shortfall into its two causes: residual multi-user interference, which
orthogonal keys do not remove because masking is elementwise, and the
distance the trained unit codebook falls short of an orthogonal set.
The legitimate curve sits above the single-user M-ary bound, and this
script splits the distance into its two possible causes: residual
multi-user interference, which orthogonal keys need not remove because
masking is elementwise, and the distance the trained unit codebook falls
short of an orthogonal set. Run it against whichever configuration
exp_full.MAIN_D currently names.
"""
import math
import sys
@@ -17,7 +17,7 @@ import torch
sys.path.insert(0, str(Path(__file__).resolve().parent))
import sse_lib as L
from sse_lib import DEVICE, snr_to_sigma2, rayleigh_gain
from exp_full import main_model
from exp_full import main_model, oma_ser_keylen
SNR_DB = 10.0
FRAMES = 400_000
@@ -80,8 +80,7 @@ def main():
print("user-0 SER, all four users transmitting : %.4f" % four)
print("user-0 SER, other users silent : %.4f" % solo)
print("OMA, resource matched (closed form) : %.4f"
% L.oma_ser([SNR_DB])[0])
print("ideal 16-ary orthogonal (separate MC) : 0.1986")
% oma_ser_keylen(m.L, SNR_DB))
if __name__ == "__main__":