Lora调制解调程序

解调程序

Here is a basic LoRa demodulation program in Python:

import numpy as np
import scipy.signal as signal

defdemodulate_lora(samples, sample_rate, bandwidth, spreading_factor, preamble):
    # First, downconvert to baseband
    t = np.arange(len(samples)) / sample_rate
    baseband = samples * np.exp(-1j * 2 * np.pi * bandwidth * t)
    
    # Next, filter to remove out of band noise
    nyquist = sample_rate / 2
    cutoff = bandwidth + (spreading_factor * bandwidth) / 2
    order = int(sample_rate / cutoff)
    b, a = signal.butter(order, cutoff / nyquist, 'low')
    filtered = signal.lfilter(b, a, baseband)
    
    # Decimate to reduce sample rate
    decimation = int(sample_rate / (2**spreading_factor * bandwidth))
    decimated = signal.decimate(filtered, decimation)
    
    # Dete

猜你喜欢

转载自blog.csdn.net/Cretheego/article/details/128821250
今日推荐