modulation¶
Examples¶
Harmonic¶
"""Harmonics with noise."""
import os
import sys
import random
import matplotlib.pyplot as plt
sys.path.insert(0, os.path.abspath('.'))
from dsplab.modulation import harm
def noise(t):
"""Return random value."""
return random.normalvariate(0, 0.1)
def main():
"""Run example."""
T = 10
fs = 100
x, t = harm(
length=T, sample_rate=fs,
amp=1, freq=1,
)
plt.plot(t, x)
x, t = harm(
length=T, sample_rate=fs,
amp=2, freq=1,
noise_a=noise
)
plt.plot(t, x)
x, t = harm(
length=T, sample_rate=fs,
amp=2, freq=1,
noise_f=noise
)
plt.plot(t, x)
plt.show()
if __name__ == "__main__":
main()
Amplitude¶
"""Example of amplitude modulation."""
import os
import sys
import matplotlib.pyplot as plt
sys.path.insert(0, os.path.abspath('.'))
from dsplab.modulation import amp_mod
def modulator(t):
"""Return amplitude value."""
if t < 5:
return 1
return 2
def main():
"""Run example."""
T = 10
fs = 100
f = 1
x, t = amp_mod(
length=T,
sample_rate=fs,
freq=f,
func=modulator,
)
plt.plot(t, x)
plt.show()
if __name__ == "__main__":
main()
Frequency¶
"""Example of frequency modulation."""
import os
import sys
import matplotlib.pyplot as plt
sys.path.insert(0, os.path.abspath('.'))
from dsplab.modulation import freq_mod
def modulator(t):
"""Return frequency value."""
return 0.05*t + 0.5
def main():
"""Run example."""
T = 10
fs = 100
amp = 1
xs, phases, ts = freq_mod(
length=T,
sample_rate=fs,
amp=amp,
func=modulator,
)
plt.subplot(211)
plt.plot(ts, xs)
plt.subplot(212)
plt.plot(ts, phases)
plt.show()
if __name__ == "__main__":
main()
Members¶
Functions for modulation and demodulation.
-
dsplab.modulation.
amp_mod
(length, sample_rate, func, freq, phi=0, noise_f=None, noise_a=None)[source]¶ Amplitude modulation.
Parameters: - length (float) – Length pf signal (sec).
- sample_rate (float) – Sampling frequency (Hz).
- freq (float) – Frequency of signal (Hz).
- phi (float) – Initial phase (radians).
- func (Object) – Function that returns amplitude value depending on time.
- noise_f (Object) – Function that returns noise value added to frequency.
- noise_a (Object) – Function that returns noise value added to amplitude.
Returns: - np.array – Signal values.
- np.array – Time values.
-
dsplab.modulation.
digital_hilbert_filter
(ntaps=101, window='hamming')[source]¶ Calculate digital hilbert filter.
Parameters: - ntaps (integer) – Length of filter.
- window (str) – Window. Default is ‘hamming’.
Returns: Filter.
Return type: np.array
-
dsplab.modulation.
envelope_by_extremums
(xdata, sample_rate=1, tdata=None)[source]¶ Calculate envelope by local extremums of signals.
Parameters: - xdata (array_like) – Signal values.
- sample_rate (float) – Sampling frequency.
- tdata (array_like) – Time values. Use it for unregular discretized input signal.
Returns: - np.array – Damping values.
- np.array – Time values.
-
dsplab.modulation.
freq_amp_mod
(length, sample_rate, a_func, f_func, phi=0)[source]¶ Simultaneous frequency and amplitude modulation.
Parameters: - length (float) – Length pf signal (sec).
- sample_rate (float) – Sampling frequency (Hz).
- a_func (Object) – Function that returns amplitude value depending on time.
- f_func (Object) – Function that returns frequency values (in Hz) depending on time.
- phi (float) – Initial phase (radians).
Returns: - np.array – Signal values.
- np.array – Full phase values.
- np.array – Time values.
-
dsplab.modulation.
freq_by_extremums
(xdata, sample_rate)[source]¶ Calculate frequency of oscillating signal by extremums.
Parameters: - xdata (array_like) – Values of input signals.
- sample_rate (float) – Sampling frequency (Hz).
Returns: Frequency.
Return type: float
-
dsplab.modulation.
freq_by_zeros
(xdata, sample_rate)[source]¶ Calculate average frequency of detrended oscillating signal by counting zeros.
-
dsplab.modulation.
freq_mod
(length, sample_rate, amp, func, phi=0, noise_f=None, noise_a=None)[source]¶ Amplitude modulation.
Parameters: - length (float) – Length pf signal (sec).
- sample_rate (float) – Sampling frequency (Hz).
- amp (float) – Amplitude of signal.
- phi (float) – Initial phase (radians).
- func (Object) – Function that returns frequency values (in Hz) depending on time.
- noise_f (Object) – Function that returns noise value added to frequency.
- noise_a (Object) – Function that returns noise value added to amplitude.
Returns: - np.array – Signal values.
- np.array – Full phase values.
- np.array – Time values.
-
dsplab.modulation.
freqs_by_wave_len
(xdata, tdata, cut_nans=True)[source]¶ Calculate frequencies using lenghs of waves and linear interpolation.
Parameters: - xdata (np.ndarray) – Signal values.
- tdata (np.ndarray) – Time values.
- cut_nans (boolean) – If True, the nan values at the ends of the of the produced array will removed.
Returns: Freqs values.
Return type: np.ndarray
-
dsplab.modulation.
harm
(length, sample_rate, amp, freq, phi=0, noise_a=None, noise_f=None)[source]¶ Generate harmonic signal.
Parameters: - length (float) – Length pf signal (sec).
- sample_rate (float) – Sampling frequency (Hz).
- amp (float) – Amplitude of signal.
- freq (Object) – Frequency of signal (Hz).
- phi (float) – Initial phase (radians).
- noise_a (callable) – Returns noise value added to amplitude.
- noise_f (callable) – Returns noise value added to frequency.
Returns: - np.array – Signal values.
- np.array – Time values.
-
dsplab.modulation.
iq_demod
(xdata, tdata, f_central, a_coeffs, b_coeffs)[source]¶ Return instantaneous frequency of modulated signal using IQ processign.
Parameters: - xdata (array_like) – Signal values.
- tdata (array_like) – Time values.
- f_central (float) – Carrier frequency.
- a_coeffs (array_like) – a values of filter.
- b_coeffs (array_like) – b values of filter.
Returns: - np.ndarray of floats – Instantaneous frequency values.
- np.ndarray – Time values.
-
dsplab.modulation.
linint
(xdata, tdata, ts_new)[source]¶ Find values of xdata in ts_new points.
Parameters: - xdata (np.ndarray) – Signal values.
- tdata (np.ndarray) – Time values.
- ts_new (np.ndarray) – New time values.
Returns: New signal values.
Return type: np.ndarray
-
dsplab.modulation.
phase_mod
(length, sample_rate, amp, freq, func, noise_f=None, noise_a=None)[source]¶ Phase modulation.
Parameters: - length (float) – Length pf signal (sec).
- sample_rate (float) – Sampling frequency (Hz).
- amp (float) – Amplitude of signal.
- freq (float) – Frequency of signal (Hz).
- func (Object) – Function that returns phase values (in radians) depending on time.
- noise_f (Object) – Function that returns noise value added to frequency.
- noise_a (Object) – Function that returns noise value added to amplitude.
Returns: - np.array – Signal values.
- np.array – Time values.