diff options
| author | andreas128 <Andreas> | 2017-01-22 00:51:47 +0000 | 
|---|---|---|
| committer | andreas128 <Andreas> | 2017-01-22 00:51:47 +0000 | 
| commit | a88e67cb485d6b4b7bc21aa3c9dedbab37190cb9 (patch) | |
| tree | 2158dc19cd17b72b7a96a602f59bdfb5951cd814 /src/dab_util.py | |
| parent | 62d6affd9fd9c5d45305cd5880c16696c0744044 (diff) | |
| download | ODR-StaticPrecorrection-a88e67cb485d6b4b7bc21aa3c9dedbab37190cb9.tar.gz ODR-StaticPrecorrection-a88e67cb485d6b4b7bc21aa3c9dedbab37190cb9.tar.bz2 ODR-StaticPrecorrection-a88e67cb485d6b4b7bc21aa3c9dedbab37190cb9.zip | |
am-am am-pm diagram in syncmeasurement.ipynb
Diffstat (limited to 'src/dab_util.py')
| -rw-r--r-- | src/dab_util.py | 42 | 
1 files changed, 42 insertions, 0 deletions
| diff --git a/src/dab_util.py b/src/dab_util.py new file mode 100644 index 0000000..2ad2af6 --- /dev/null +++ b/src/dab_util.py @@ -0,0 +1,42 @@ +import numpy as np +import scipy +import matplotlib.pyplot as plt + +c = { +        "bw":1536000 +        } + +def calc_fft(signal, fft_size = 1024, sampling_rate = 1, plot = False): +    """returns one numpy array for the frequencies and one for the corresponding fft""" +    signal_spectrum = np.fft.fftshift(np.fft.fft(signal, fft_size)) +    freqs = np.fft.fftshift(np.fft.fftfreq(fft_size, d=1./sampling_rate)) +    if plot == True: +        plot_freq_spec(freqs, signal_spectrum) +    return freqs, signal_spectrum + +def plot_freq_spec(freq, spec = None): +    plt.figure(figsize=(10,5)) +    if spec == None: +        plt.plot(freq) +    else: +        plt.plot(freq, np.abs(spec)) + +def freq_to_fft_sample(freq, fft_size, sampling_rate): +    freq_ratio = 1.0 * fft_size / sampling_rate +    return int(freq * freq_ratio + fft_size / 2) + +def crop_signal(signal, n_window = 1000, n_zeros = 1000, debug = False): +    #signal = signal[-10:-1] +    mag = abs(signal) +    window = np.ones(n_window) / float(n_window) +    mag = scipy.signal.convolve(window, mag) +    mag = scipy.signal.convolve(window, mag) +    thr = 0.05 * np.max(mag) +    idx_start = np.argmax(mag > thr) +    idx_end = mag.shape[0] - np.argmax(np.flipud(mag > thr)) +    if debug: +        plt.plot(mag < thr) +        plt.plot((idx_start,idx_start), (0,0.1), color='g', linewidth=2) +        plt.plot((idx_end,idx_end), (0,0.1), color='r', linewidth=2) +    signal = signal[idx_start - n_zeros: idx_end + n_zeros] +    return signal | 
