鱼C论坛

 找回密码
 立即注册
查看: 2691|回复: 1

[已解决]求助,python如何实现正弦信号调制、解调

[复制链接]
发表于 2023-9-14 20:43:52 | 显示全部楼层 |阅读模式
4鱼币
求助,python如何实现正弦信号调制、解调,有大佬能分享个信号处理的样本吗,练练手
最佳答案
2023-9-14 20:43:53
在Python中,可以使用NumPy和SciPy库来实现正弦信号的调制和解调。

调制:

调制是将一个低频信号(称为基带信号)转换为高频信号(称为载波信号)的过程。在Python中,我们可以使用NumPy库来生成基带信号和载波信号,然后将它们相乘以进行调制。

以下是一个示例代码,演示如何生成基带信号和载波信号,并将它们相乘以进行调制:

  1. import numpy as np
  2. import matplotlib.pyplot as plt

  3. # 生成基带信号
  4. Fs = 1000  # 采样率
  5. t = np.arange(0, 1, 1/Fs)  # 时间向量
  6. f = 10  # 基带信号频率
  7. baseband_signal = np.sin(2*np.pi*f*t)

  8. # 生成载波信号
  9. Fc = 100  # 载波信号频率
  10. carrier_signal = np.sin(2*np.pi*Fc*t)

  11. # 进行调制
  12. modulated_signal = baseband_signal * carrier_signal

  13. # 绘制信号图形
  14. plt.subplot(3, 1, 1)
  15. plt.plot(t, baseband_signal)
  16. plt.title('Baseband Signal')

  17. plt.subplot(3, 1, 2)
  18. plt.plot(t, carrier_signal)
  19. plt.title('Carrier Signal')

  20. plt.subplot(3, 1, 3)
  21. plt.plot(t, modulated_signal)
  22. plt.title('Modulated Signal')

  23. plt.tight_layout()
  24. plt.show()
复制代码


解调:

解调是将调制信号转换回原始基带信号的过程。在Python中,我们可以使用SciPy库中的解调函数来实现解调。

以下是一个示例代码,演示如何使用SciPy库中的解调函数对调制信号进行解调:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from scipy.signal import hilbert

  4. # 生成调制信号
  5. Fs = 1000  # 采样率
  6. t = np.arange(0, 1, 1/Fs)  # 时间向量
  7. f = 10  # 基带信号频率
  8. baseband_signal = np.sin(2*np.pi*f*t)
  9. Fc = 100  # 载波信号频率
  10. carrier_signal = np.sin(2*np.pi*Fc*t)
  11. modulated_signal = baseband_signal * carrier_signal

  12. # 进行解调
  13. analytic_signal = hilbert(modulated_signal)
  14. amplitude_envelope = np.abs(analytic_signal)
  15. demodulated_signal = np.unwrap(np.angle(analytic_signal))

  16. # 绘制信号图形
  17. plt.subplot(4, 1, 1)
  18. plt.plot(t, baseband_signal)
  19. plt.title('Baseband Signal')

  20. plt.subplot(4, 1, 2)
  21. plt.plot(t, carrier_signal)
  22. plt.title('Carrier Signal')

  23. plt.subplot(4, 1, 3)
  24. plt.plot(t, modulated_signal)
  25. plt.title('Modulated Signal')

  26. plt.subplot(4, 1, 4)
  27. plt.plot(t, demodulated_signal)
  28. plt.title('Demodulated Signal')

  29. plt.tight_layout()
  30. plt.show()
复制代码


在上面的代码中,我们使用了SciPy库中的hilbert函数来生成解调信号的解析信号。然后,我们计算解析信号的幅度包络和相位角,并使用unwrap函数来处理相位角,以获得解调信号。

最佳答案

查看完整内容

在Python中,可以使用NumPy和SciPy库来实现正弦信号的调制和解调。 调制: 调制是将一个低频信号(称为基带信号)转换为高频信号(称为载波信号)的过程。在Python中,我们可以使用NumPy库来生成基带信号和载波信号,然后将它们相乘以进行调制。 以下是一个示例代码,演示如何生成基带信号和载波信号,并将它们相乘以进行调制: 解调: 解调是将调制信号转换回原始基带信号的过程。在Python中,我们可以使用Sci ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-9-14 20:43:53 | 显示全部楼层    本楼为最佳答案   
在Python中,可以使用NumPy和SciPy库来实现正弦信号的调制和解调。

调制:

调制是将一个低频信号(称为基带信号)转换为高频信号(称为载波信号)的过程。在Python中,我们可以使用NumPy库来生成基带信号和载波信号,然后将它们相乘以进行调制。

以下是一个示例代码,演示如何生成基带信号和载波信号,并将它们相乘以进行调制:

  1. import numpy as np
  2. import matplotlib.pyplot as plt

  3. # 生成基带信号
  4. Fs = 1000  # 采样率
  5. t = np.arange(0, 1, 1/Fs)  # 时间向量
  6. f = 10  # 基带信号频率
  7. baseband_signal = np.sin(2*np.pi*f*t)

  8. # 生成载波信号
  9. Fc = 100  # 载波信号频率
  10. carrier_signal = np.sin(2*np.pi*Fc*t)

  11. # 进行调制
  12. modulated_signal = baseband_signal * carrier_signal

  13. # 绘制信号图形
  14. plt.subplot(3, 1, 1)
  15. plt.plot(t, baseband_signal)
  16. plt.title('Baseband Signal')

  17. plt.subplot(3, 1, 2)
  18. plt.plot(t, carrier_signal)
  19. plt.title('Carrier Signal')

  20. plt.subplot(3, 1, 3)
  21. plt.plot(t, modulated_signal)
  22. plt.title('Modulated Signal')

  23. plt.tight_layout()
  24. plt.show()
复制代码


解调:

解调是将调制信号转换回原始基带信号的过程。在Python中,我们可以使用SciPy库中的解调函数来实现解调。

以下是一个示例代码,演示如何使用SciPy库中的解调函数对调制信号进行解调:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from scipy.signal import hilbert

  4. # 生成调制信号
  5. Fs = 1000  # 采样率
  6. t = np.arange(0, 1, 1/Fs)  # 时间向量
  7. f = 10  # 基带信号频率
  8. baseband_signal = np.sin(2*np.pi*f*t)
  9. Fc = 100  # 载波信号频率
  10. carrier_signal = np.sin(2*np.pi*Fc*t)
  11. modulated_signal = baseband_signal * carrier_signal

  12. # 进行解调
  13. analytic_signal = hilbert(modulated_signal)
  14. amplitude_envelope = np.abs(analytic_signal)
  15. demodulated_signal = np.unwrap(np.angle(analytic_signal))

  16. # 绘制信号图形
  17. plt.subplot(4, 1, 1)
  18. plt.plot(t, baseband_signal)
  19. plt.title('Baseband Signal')

  20. plt.subplot(4, 1, 2)
  21. plt.plot(t, carrier_signal)
  22. plt.title('Carrier Signal')

  23. plt.subplot(4, 1, 3)
  24. plt.plot(t, modulated_signal)
  25. plt.title('Modulated Signal')

  26. plt.subplot(4, 1, 4)
  27. plt.plot(t, demodulated_signal)
  28. plt.title('Demodulated Signal')

  29. plt.tight_layout()
  30. plt.show()
复制代码


在上面的代码中,我们使用了SciPy库中的hilbert函数来生成解调信号的解析信号。然后,我们计算解析信号的幅度包络和相位角,并使用unwrap函数来处理相位角,以获得解调信号。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 19:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表