基本要求:
●构造一个大小为20(共20 个数)的随机0、1 序列(0、1 概率相等),然后用该序列对正弦波sin(x)进行相位调制,要求sin(x)每变化 1 个周期(2π),其相位就根据0、1 序列的值调整一次,其中,若对应序列值为0 则相位调整量为0,若对应序列值为1 则相位调整量为π。将随机序列打印出来,再将所构造的已调信号绘制出来。
例如:
若所构造0、1 序列前四个值为0、1、1、0,则经过相位调制后的波形应具有如下形式: 当x 在[0,2π) 内时,对应波形为 sin(x);当 x 在[2π,6π)内时,对应波形为sin(x+π);
当x 在[6π,8π)内时,对应波形为 sin(x);...
高级要求:
●再构造一个大小为100(共100 个数)的随机 0、1 序列(0、1 概率相等),然后用该序列生成一个简易的频移键控信号,要求每个序列值控制的时长均为1s(1秒),且序列值为0时,生成波形sin(2πt),序列值为1 时,生成波形 sin(4πt)。注意:这里的t 为时间变量,单位:s。将随机序列打印出来,再将所构造的频移键控信号绘制出来(注意横坐标单位:s)。
【要求时间变量 t 的分辨间隔(相邻两点对应的时间间隔)不大于 0.01s】
例如:
所构造0、1 序列前四个值为0、1、1、0,则经过频移键控后的波形应具有如下形式:
当 t 在[0,1)内时,对应波形为 sin(2πt);当 t 在[1,3)内时,对应波形为 sin(4πt);当 t 在[3,4)内时,对应波形为sin(2πt);...
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from mpl_toolkits import mplot3d
# 生成20随机的等概率的0 1 数字
a = np.random.rand(20)
b = list(a)
num_zeros = 0
num_ones = 0
num = []
for i in b:
if i < 1/2:
num.append(0)
num_zeros += 1
else:
num.append(1)
num_ones += 1
print(num)
# 当数字为0时形成的图形
def paint_0(n):
x = np.arange(n * np.pi, (n + 2) * np.pi, 0.01)
y = np.sin(x)
plt.figure(1)
plt.plot(x, y, color='b')
# 当数字为1时形成的图形
def paint_1(n):
x = np.arange(n * np.pi, (n + 2) * np.pi, 0.01)
y = np.sin(x + np.pi)
plt.figure(1)
plt.plot(x, y, color='b')
n = 0
for i in num:
if i == 0:
paint_0(n)
n += 2
else:
paint_1(n)
n += 2
plt.show()
# 生成20随机的等概率的0 1 数字
a1 = np.random.rand(100)
b1 = list(a1)
num_zeros1 = 0
num_ones1 = 0
num1 = []
for i in b1:
if i < 1/2:
num1.append(0)
num_zeros1 += 1
else:
num1.append(1)
num_ones1 += 1
print(num1)
def paint_2t(n):
t = np.arange(n, n + 1, 0.01)
y = np.sin(2*np.pi*t)
plt.figure(2, dpi=300, figsize=(24, 8))
plt.plot(t, y, color='b')
def paint_4t(n):
t = np.arange(n, n + 1, 0.01)
y = np.sin(4 * np.pi * t)
plt.figure(2, dpi=300, figsize=(24, 8))
plt.plot(t, y, color='b')
n1 = 0
for i in num1:
if i == 0:
paint_2t(n1)
n1 += 1
else:
paint_4t(n1)
n1 += 1
plt.show()