diff --git a/src/ria_toolkit_oss/signal/block_generator/multirate/downsampling.py b/src/ria_toolkit_oss/signal/block_generator/multirate/downsampling.py index bfae45a..de197d9 100644 --- a/src/ria_toolkit_oss/signal/block_generator/multirate/downsampling.py +++ b/src/ria_toolkit_oss/signal/block_generator/multirate/downsampling.py @@ -58,3 +58,6 @@ class Downsampling(Block): :rtype: DataType """ return DataType.BASEBAND_SIGNAL + + def get_samples(self, num_samples): + raise NotImplementedError diff --git a/src/ria_toolkit_oss/signal/block_generator/multirate/upsampling.py b/src/ria_toolkit_oss/signal/block_generator/multirate/upsampling.py index d0626e5..3d98f0e 100644 --- a/src/ria_toolkit_oss/signal/block_generator/multirate/upsampling.py +++ b/src/ria_toolkit_oss/signal/block_generator/multirate/upsampling.py @@ -51,6 +51,9 @@ class Upsampling(Block): """ return DataType.UPSAMPLED_SYMBOLS + def get_samples(self, num_samples): + raise NotImplementedError + def __call__(self, signal: np.ndarray) -> np.ndarray: """Upsample the input signal by inserting zeros between samples. diff --git a/src/ria_toolkit_oss/signal/block_generator/pulse_shaping/raised_cosine_filter.py b/src/ria_toolkit_oss/signal/block_generator/pulse_shaping/raised_cosine_filter.py index c938b81..d2a85f0 100644 --- a/src/ria_toolkit_oss/signal/block_generator/pulse_shaping/raised_cosine_filter.py +++ b/src/ria_toolkit_oss/signal/block_generator/pulse_shaping/raised_cosine_filter.py @@ -85,13 +85,14 @@ class RaisedCosineFilter(PulseShapingFilter): """ t_symbol = self.upsampling_factor beta = self.beta - f_val = ( - 1 - / t_symbol - * np.sinc(t / t_symbol) - * np.cos(np.pi * beta * t / t_symbol) - / (1 - (2 * beta * t / t_symbol) ** 2) - ) + with np.errstate(divide='ignore', invalid='ignore'): + f_val = ( + 1 + / t_symbol + * np.sinc(t / t_symbol) + * 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] if idx_limit_case.size > 0: f_val[idx_limit_case] = np.pi / (4 * t_symbol) * np.sinc(1 / (2 * beta)) diff --git a/src/ria_toolkit_oss/signal/block_generator/pulse_shaping/root_raised_cosine_filter.py b/src/ria_toolkit_oss/signal/block_generator/pulse_shaping/root_raised_cosine_filter.py index 1b801cb..39ba623 100644 --- a/src/ria_toolkit_oss/signal/block_generator/pulse_shaping/root_raised_cosine_filter.py +++ b/src/ria_toolkit_oss/signal/block_generator/pulse_shaping/root_raised_cosine_filter.py @@ -86,10 +86,11 @@ class RootRaisedCosineFilter(PulseShapingFilter): alpha = 4 * beta * t / t_symbol 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))) / ( - np.pi * t * (1 - alpha**2) - ) - f_val[t == 1e9] = (1 + beta * (4 / np.pi - 1)) / t_symbol + with np.errstate(divide='ignore', invalid='ignore'): + 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 idx_limit_case = np.where(np.abs(np.abs(t) - (t_symbol / (4 * beta))) < 1e-6)[0] if idx_limit_case.size > 0: