Skip to content

Commit 982b8e8

Browse files
authored
add nrTransformPrecode() and nrTransformDeprecode() (#75)
1 parent 87eeb47 commit 982b8e8

File tree

6 files changed

+73
-0
lines changed

6 files changed

+73
-0
lines changed

py3gpp/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
from .nrDLSCHInfo import nrDLSCHInfo
4343
from .nrPDSCHIndices import nrPDSCHIndices
4444
from .nrPDSCHMCSTables import nrPDSCHMCSTables
45+
from .nrTransformPrecode import nrTransformPrecode
46+
from .nrTransformDeprecode import nrTransformDeprecode
4547

4648
from .configs.nrCarrierConfig import nrCarrierConfig
4749
from .configs.nrNumerologyConfig import nrNumerologyConfig

py3gpp/nrTransformDeprecode.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import numpy as np
2+
3+
def nrTransformDeprecode(modSym, mrb):
4+
mrb = int(mrb)
5+
assert modSym.shape[0] % (mrb * 12) == 0, "input number of rows must be an integer multiple of mrb * 12"
6+
return (np.fft.ifft(modSym.reshape(int(modSym.shape[0] / (mrb * 12)), mrb * 12)) * np.sqrt(mrb * 12)).ravel()

py3gpp/nrTransformPrecode.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import numpy as np
2+
3+
def nrTransformPrecode(modSym, mrb):
4+
mrb = int(mrb)
5+
assert modSym.shape[0] % (mrb * 12) == 0, "input number of rows must be an integer multiple of mrb * 12"
6+
return (np.fft.fft(modSym.reshape(int(modSym.shape[0] / (mrb * 12)), mrb * 12)) * 1/np.sqrt(mrb * 12)).ravel()

tests/test_data/transformPrecode.py

Lines changed: 6 additions & 0 deletions
Large diffs are not rendered by default.

tests/test_nrTransformPrecode.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import sys
2+
import numpy as np
3+
import pytest
4+
5+
from py3gpp.nrTransformPrecode import nrTransformPrecode
6+
from py3gpp.nrSymbolModulate import nrSymbolModulate
7+
8+
sys.path.append("test_data")
9+
10+
from test_data.transformPrecode import cw, desired_result_2, desired_result_40
11+
12+
def test_run_nr_transform_precode_2():
13+
modSym = nrSymbolModulate(cw, 'QPSK')
14+
result_2 = nrTransformPrecode(modSym, 2)
15+
assert np.array_equal(np.round(result_2, 8), np.round(desired_result_2, 8))
16+
17+
def test_run_nr_transform_precode_40():
18+
modSym = nrSymbolModulate(cw, 'QPSK')
19+
result_40 = nrTransformPrecode(modSym, 40)
20+
assert np.array_equal(np.round(result_40, 8), np.round(desired_result_40, 8))
21+
22+
if __name__ == '__main__':
23+
test_run_nr_transform_precode_2()
24+
test_run_nr_transform_precode_40()
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import sys
2+
import numpy as np
3+
import pytest
4+
5+
from py3gpp.nrTransformPrecode import nrTransformPrecode
6+
from py3gpp.nrTransformDeprecode import nrTransformDeprecode
7+
from py3gpp.nrSymbolModulate import nrSymbolModulate
8+
9+
sys.path.append("test_data")
10+
11+
from test_data.transformPrecode import cw, desired_result_2, desired_result_40
12+
13+
def test_run_nrTransformPrecode_nrTransformDeprecode_2():
14+
modSym = nrSymbolModulate(cw, 'QPSK')
15+
result = nrTransformPrecode(modSym, 2)
16+
assert np.array_equal(np.round(result, 8), np.round(desired_result_2, 8))
17+
x = nrTransformDeprecode(result, 2)
18+
assert np.array_equal(np.round(x, 8), np.round(modSym, 8))
19+
20+
def test_run_nrTransformPrecode_nrTransformDeprecode_40():
21+
modSym = nrSymbolModulate(cw, 'QPSK')
22+
result = nrTransformPrecode(modSym, 40)
23+
assert np.array_equal(np.round(result, 8), np.round(desired_result_40, 8))
24+
x = nrTransformDeprecode(result, 40)
25+
assert np.array_equal(np.round(x, 8), np.round(modSym, 8))
26+
27+
if __name__ == '__main__':
28+
test_run_nrTransformPrecode_nrTransformDeprecode_2()
29+
test_run_nrTransformPrecode_nrTransformDeprecode_40()

0 commit comments

Comments
 (0)