cli #15

Merged
madrigal merged 28 commits from cli into main 2025-12-22 10:42:57 -05:00
4 changed files with 19 additions and 11 deletions
Showing only changes of commit 6ba108c908 - Show all commits

View File

@ -58,3 +58,6 @@ class Downsampling(Block):
:rtype: DataType :rtype: DataType
""" """
return DataType.BASEBAND_SIGNAL return DataType.BASEBAND_SIGNAL
def get_samples(self, num_samples):
raise NotImplementedError

View File

@ -51,6 +51,9 @@ class Upsampling(Block):
""" """
return DataType.UPSAMPLED_SYMBOLS return DataType.UPSAMPLED_SYMBOLS
def get_samples(self, num_samples):
raise NotImplementedError
def __call__(self, signal: np.ndarray) -> np.ndarray: def __call__(self, signal: np.ndarray) -> np.ndarray:
"""Upsample the input signal by inserting zeros between samples. """Upsample the input signal by inserting zeros between samples.

View File

@ -85,13 +85,14 @@ class RaisedCosineFilter(PulseShapingFilter):
""" """
t_symbol = self.upsampling_factor t_symbol = self.upsampling_factor
beta = self.beta beta = self.beta
f_val = ( with np.errstate(divide='ignore', invalid='ignore'):
1 f_val = (
/ t_symbol 1
* np.sinc(t / t_symbol) / t_symbol
* np.cos(np.pi * beta * t / t_symbol) * np.sinc(t / t_symbol)
/ (1 - (2 * beta * t / t_symbol) ** 2) * np.cos(np.pi * beta * t / t_symbol)
) / (1 - (2 * beta * t / t_symbol) ** 2)
)
idx_limit_case = np.where(np.abs(np.abs(t) - (t_symbol / (2 * beta))) < 1e-6)[0] idx_limit_case = np.where(np.abs(np.abs(t) - (t_symbol / (2 * beta))) < 1e-6)[0]
if idx_limit_case.size > 0: if idx_limit_case.size > 0:
f_val[idx_limit_case] = np.pi / (4 * t_symbol) * np.sinc(1 / (2 * beta)) f_val[idx_limit_case] = np.pi / (4 * t_symbol) * np.sinc(1 / (2 * beta))

View File

@ -86,10 +86,11 @@ class RootRaisedCosineFilter(PulseShapingFilter):
alpha = 4 * beta * t / t_symbol alpha = 4 * beta * t / t_symbol
t[t == 0] = 1e9 t[t == 0] = 1e9
f_val = (np.sin(np.pi * t / t_symbol * (1 - beta)) + alpha * np.cos(np.pi * t / t_symbol * (1 + beta))) / ( with np.errstate(divide='ignore', invalid='ignore'):
np.pi * t * (1 - alpha**2) f_val = (np.sin(np.pi * t / t_symbol * (1 - beta)) + alpha * np.cos(np.pi * t / t_symbol * (1 + beta))) / (
) np.pi * t * (1 - alpha**2)
f_val[t == 1e9] = (1 + beta * (4 / np.pi - 1)) / t_symbol )
f_val[t == 1e9] = (1 + beta * (4 / np.pi - 1)) / t_symbol
idx_limit_case = np.where(np.abs(np.abs(t) - (t_symbol / (4 * beta))) < 1e-6)[0] idx_limit_case = np.where(np.abs(np.abs(t) - (t_symbol / (4 * beta))) < 1e-6)[0]
if idx_limit_case.size > 0: if idx_limit_case.size > 0: