b_asic.utils

B-ASIC Utilities.

b_asic.utils.decompose(a: Sequence[int | float | complex], factor: int) List[List[int | float | complex]]

Polyphase decompose signal a into factor parts.

Return factor lists, each with every factor value.

Parameters:
aarray

The array to polyphase decompose.

factorint

The number of polyphase components with.

Examples

>>> from b_asic.utils import decompose
...
... a = list(range(6))
... decompose(a, 2)
[[0, 2, 4], [1, 3, 5]]
>>> decompose(a, 3)
[[0, 3], [1, 4], [2, 5]]
b_asic.utils.downsample(a: Sequence[int | float | complex], factor: int, phase: int = 0) List[int | float | complex]

Downsample a sequence with an integer factor.

Keeps every factor value, starting with phase.

Parameters:
aarray

The array to downsample.

factorint

The factor to downsample with.

phaseint, default: 0

The phase of the downsampling.

Examples

>>> from b_asic.utils import downsample
...
... a = list(range(6))
... downsample(a, 3)
[0, 3]
>>> downsample(a, 3, 1)
[1, 4]
b_asic.utils.interleave(*args) List[int | float | complex]

Interleave a number of arrays.

Parameters:
*argsa number of arrays

Arrays to interleave. Must be of the same length.

Examples

>>> from b_asic.utils import interleave
...
... a = [1, 2]
... b = [3, 4]
... interleave(a, b)
[1, 3, 2, 4]
>>> c = [-1, 0]
... interleave(a, b, c)
[1, 3, -1, 2, 4, 0]
b_asic.utils.upsample(a: Sequence[int | float | complex], factor: int, phase: int = 0) List[int | float | complex]

Upsample a sequence with an integer factor.

Insert factor - 1 zeros between every value, starting with phase zeros.

Parameters:
aarray

The array to upsample.

factorint

The factor to upsample with.

phaseint, default: 0

The phase of the upsampling.

Examples

>>> from b_asic.utils import upsample
...
... a = list(range(1, 4))
... upsample(a, 3)
[1, 0, 0, 2, 0, 0, 3, 0, 0]
>>> upsample(a, 3, 1)
[0, 1, 0, 0, 2, 0, 0, 3, 0]