无载波幅度和相位调制代码
时间: 2024-01-27 20:04:18 浏览: 20
以下是Python语言实现无载波幅度调制和相位调制的代码示例:
无载波幅度调制:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数字信号
data = np.array([1, 0, 1, 1, 0, 1, 0])
# 定义载波频率和抽样频率
fc = 10 # 载波频率
fs = 100 # 抽样频率
# 计算每个数字信号持续的时间
T = 1 / fc
# 生成时间序列
t = np.arange(0, len(data) * T, 1 / fs)
# 生成无载波幅度调制信号
signal = np.zeros_like(t)
for i in range(len(data)):
if data[i] == 1:
signal[i * int(fs / fc): (i + 1) * int(fs / fc)] = 1
# 绘制信号波形图
plt.plot(t, signal)
plt.xlim([0, len(data) * T])
plt.ylim([-1.2, 1.2])
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Amplitude Shift Keying (ASK) Signal')
plt.show()
```
相位调制:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数字信号
data = np.array([1, 0, 1, 1, 0, 1, 0])
# 定义载波频率和抽样频率
fc = 10 # 载波频率
fs = 100 # 抽样频率
# 计算每个数字信号持续的时间
T = 1 / fc
# 生成时间序列
t = np.arange(0, len(data) * T, 1 / fs)
# 生成相位调制信号
signal = np.zeros_like(t)
for i in range(len(data)):
if data[i] == 1:
signal[i * int(fs / fc): (i + 1) * int(fs / fc)] = np.pi
# 绘制信号波形图
plt.plot(t, signal)
plt.xlim([0, len(data) * T])
plt.ylim([-1.2 * np.pi, 1.2 * np.pi])
plt.xlabel('Time (s)')
plt.ylabel('Phase (rad)')
plt.title('Phase Shift Keying (PSK) Signal')
plt.show()
```
以上代码示例中,均以数字信号`[1, 0, 1, 1, 0, 1, 0]`为例,生成了对应的无载波幅度调制和相位调制信号,并绘制了信号波形图。其中无载波幅度调制的信号是一个矩形波,它的幅度为1或0,相位调制的信号是一个阶跃函数,它的相位为pi或0。