LTE Primopredajnik
Loading...
Searching...
No Matches
receiver.utils.RxUtils Class Reference

Public Member Functions

None __init__ (self, Optional[RxValidationConfig] config=None)
np.ndarray ensure_1d_time_axis (self, np.ndarray x)
float mean_power (self, np.ndarray x)
float rms (self, np.ndarray x)
np.ndarray validate_rx_samples (self, np.ndarray rx_samples, Optional[bool] require_complex=None, Optional[int] min_num_samples=None, Optional[bool] check_finite=None)
Tuple[np.ndarray, float] normalize_rms (self, np.ndarray x, float target_rms=1.0)
float db2lin (self, float db)
float lin2db (self, float x, Optional[float] floor_db=None)

Public Attributes

 config = config or RxValidationConfig()

Detailed Description

RxUtils – pomoćne funkcije za prijemnik: validacija, snaga/RMS,
normalizacija i konverzije dB↔linear.

Ova klasa je namjerno "čista" (bez LTE-specifičnih detalja) i služi
kao stabilna baza za PSS korelaciju, FFT i PBCH ekstrakciju.

Parameters
----------
config : RxValidationConfig, optional
    Pravila validacije i preferirani dtype.

Primjeri
--------
>>> import numpy as np
>>> from rx.utils import RxUtils
>>> u = RxUtils()
>>> x = (np.random.randn(2048) + 1j*np.random.randn(2048)).astype(np.complex64)
>>> x = u.validate_rx_samples(x, min_num_samples=128)
>>> y, scale = u.normalize_rms(x, target_rms=1.0)
>>> float(u.rms(y))
1.0

Member Function Documentation

◆ db2lin()

float receiver.utils.RxUtils.db2lin ( self,
float db )
Pretvara dB u linearno (10^(db/10)).

Parameters
----------
db : float

Returns
-------
float

◆ ensure_1d_time_axis()

np.ndarray receiver.utils.RxUtils.ensure_1d_time_axis ( self,
np.ndarray x )
Osigurava da je signal 1D u vremenu.

Dozvoljeno:
- (N,)
- (1, N)
- (N, 1)

Parameters
----------
x : np.ndarray
    Ulazni signal.

Returns
-------
np.ndarray
    1D signal oblika (N,).

Raises
------
ValueError
    Ako je ulaz matrica (M, N) gdje M>1 i N>1.

◆ lin2db()

float receiver.utils.RxUtils.lin2db ( self,
float x,
Optional[float] floor_db = None )
Pretvara linearno u dB (10*log10(x)).

Parameters
----------
x : float
    Linearna vrijednost.
floor_db : float, optional
    Ako je dato, za x<=0 vraća floor_db umjesto izuzetka.

Returns
-------
float

Raises
------
ValueError
    Ako x<=0 i floor_db nije zadat.

◆ mean_power()

float receiver.utils.RxUtils.mean_power ( self,
np.ndarray x )
Računa srednju snagu signala: mean(|x|^2).

Parameters
----------
x : np.ndarray
    Kompleksni ili realni signal.

Returns
-------
float
    Srednja snaga.

◆ normalize_rms()

Tuple[np.ndarray, float] receiver.utils.RxUtils.normalize_rms ( self,
np.ndarray x,
float target_rms = 1.0 )
Normalizuje signal na ciljni RMS (korisno prije korelacije/PSS detekcije).

Parameters
----------
x : np.ndarray
    Kompleksni signal.
target_rms : float
    Ciljni RMS (>0).

Returns
-------
y : np.ndarray
    Normalizovan signal.
scale : float
    Faktor skale koji je primijenjen (y = x * scale).

Raises
------
ValueError
    Ako je target_rms <= 0 ili je signal praktično nulte snage.

◆ rms()

float receiver.utils.RxUtils.rms ( self,
np.ndarray x )
RMS signala: sqrt(mean(|x|^2)).

Parameters
----------
x : np.ndarray
    Signal.

Returns
-------
float
    RMS vrijednost.

◆ validate_rx_samples()

np.ndarray receiver.utils.RxUtils.validate_rx_samples ( self,
np.ndarray rx_samples,
Optional[bool] require_complex = None,
Optional[int] min_num_samples = None,
Optional[bool] check_finite = None )
Validira RX uzorke (dtype/NaN/Inf/min dužina/snaga) i vraća signal
u kompleksnom dtype-u (po konfiguraciji).

Napomena: podrazumijevamo da je **zadnja osa vrijeme**.

Parameters
----------
rx_samples : np.ndarray
    Ulazni signal (1D/2D/ND). Zadnja osa je vrijeme.
require_complex : bool, optional
    Override za config.require_complex.
min_num_samples : int, optional
    Override za config.min_num_samples.
check_finite : bool, optional
    Override za config.check_finite.

Returns
-------
np.ndarray
    Validirani signal, kompleksan dtype (config.out_dtype ili complex128).

Raises
------
TypeError
    Ako se traži kompleksan signal, a ulaz nije kompleksan.
ValueError
    Ako signal sadrži NaN/Inf, premalo uzoraka ili praktično nultu snagu.

The documentation for this class was generated from the following file:
  • receiver/utils.py