cli #15
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user