【问题标题】:Is there a way of sending and receiving signals for modulated signal's using python?有没有办法使用python发送和接收调制信号的信号?
【发布时间】:2021-03-13 18:26:25
【问题描述】:

我一直在尝试寻找在 python 上发送调制信号的方法,然后再对发送和接收的数据进行分析。

目前我只想能够使用 PAM 等调制格式发送数据,然后接收它

任何帮助将不胜感激,谢谢

【问题讨论】:

    标签: python signal-processing telecommunication modulation


    【解决方案1】:

    我没试过,但是有一个Komm Python library用于通信系统的分析和仿真。 Komm 包括脉冲幅度调制komm.PAModulation 的实现,以及其他调制方案。

    komm.PAModulation 类有一个.modulate() 方法,它将数据位作为输入并将其调制为传输信号。相反,有一个.demodulate() 方法接收接收到的信号并尝试从中解调数据。 Komm 似乎没有配备无线电或其他模式的接口,因此您需要单独弄清楚如何实际发送和接收这些信号。

    【讨论】:

      【解决方案2】:

      有一种在模拟中发送信号的方法。例如。如果你想在 4QAM 系统中传输比特组合 10,你必须从一个调制器开始,它将它映射到一个复杂的符号:假设映射是 1+1j -> 现在你必须“传输" 通道上的这个复杂符号会引入失真(例如,加性高斯白噪声)。在接收器上,您现在尝试检测此符号并将其映射回原始 10 位组合。

      我建议您从头开始编写此程序,以便更好地理解该主题。

      4QAM 调制的代码可以例如看起来像这样:

      import matplotlib.pyplot as plt
      import numpy as np
      import pylab as pyl
      
      def modulate_4QAM(bits):
          b_temp = np.reshape(bits * 2 - 1, (-1, 2)) # reshape bits in [0,1] to [-1,1]
          x = 1 / np.sqrt(2) * (b_temp[:, 0] + 1j * b_temp[:, 1])
          return x
      
      def detecting_4QAM(received_signal):
          # detecting (slicing) and de-mapping
          received_bits = np.zeros((len(received_signal), 2))
          received_bits[:, 0] = np.real(received_signal) > 0
          received_bits[:, 1] = np.imag(received_signal) > 0
          received_bits = np.reshape(received_bits, (-1,))
          return received_bits
      
      if __name__ == '__main__':
          b = pyl.randint(0, 2, int(4)) # generate random bits
          x = modulate_4QAM(b) # map bits to complex symbols
          noisePower=10**(-5/20) #caltulcate the noise power for a given SNR value
          noise = (noisePower)*1/np.sqrt(2)*(pyl.randn(len(x))+1j*pyl.randn(len(x)))#generate noise
          y_AWGN =x+noise # add the noise to the signal
          b_received = detecting_4QAM(y_AWGN)
      

      请注意,从 4QAM 扩展到 64QAM 会导致额外的编程/打字开销,为此工具箱变得非常方便。

      这只是一个编码示例的一小部分,该示例使用来自 https://github.com/TheWirelessClassroom/PythonExamples/tree/Modulation 的 4QAM 调制模拟 AWGN 的 BER 与 SNR

      附:我是论坛的新手,不确定是否只有部分代码或完整代码更有帮助/想要。我很乐意就此获得一些反馈并相应地更改帖子。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-08
        • 1970-01-01
        • 1970-01-01
        • 2012-08-02
        • 2020-01-14
        • 1970-01-01
        • 2016-11-06
        • 2014-10-05
        相关资源
        最近更新 更多