pycharm编程绘制2FSK和2PSK的调制波形。要求: 1、输入固定十六进制数据0xEB5A,能绘制调制波形; 2、输入变长度十六进制数据,绘制对应的波形
时间: 2024-09-27 09:09:30 浏览: 28
在PyCharm中绘制2FSK (二相移键控) 和2PSK (二相正交幅度调制) 的波形涉及到数字信号处理和图形化展示。首先,我们需要准备一些库,如`matplotlib`用于绘图,`numpy`进行数值计算。对于固定长度的数据,我们可以直接按位映射到频率变化上;而对于变长数据,需要先进行分块处理。
以下是基本步骤:
1. **导入所需库**:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import square
```
2. **函数定义:绘制2FSK波形**
对于2FSK,可以将每个二进制位关联到两个不同的频率。假设我们有固定的高频(HF)和低频(LF):
```python
def draw_2fsk(hex_data, hf=1, lf=0, fs=1000):
freqs = [hf if bit == '1' else lf for bit in bin(int(hex_data, 16))[2:]]
time = np.arange(0, len(freqs)) / fs
signal = np.convolve(time, freqs)
plt.plot(time, signal, label='2FSK')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.legend()
```
3. **函数定义:绘制2PSK波形**
2PSK通常通过相位变化来表示数据,比如每个比特对应90度或180度相位偏移:
```python
def draw_2psk(hex_data, phase_diff=90, fs=1000):
bits = list(map(lambda x: int(x, 16), str(hex_data)))
phases = np.array([phase_diff * i for i in bits])
signal = np.sin(2 * np.pi * np.cumsum(phases) / fs)
plt.plot(time, signal, label='2PSK')
```
4. **调用函数并绘制波形**
```python
hex_input = 'EB5A'
draw_2fsk(hex_input)
draw_2psk(hex_input)
plt.show()
```
**相关问题--:**
1. PyCharm中如何处理变长度的十六进制数据以便绘制波形?
2. 使用Python绘制数字调制波形时,为什么要用到`square`函数?
3. 如何调整2FSK和2PSK波形的频率范围?
阅读全文