如何用MATLAB产生数字调制的基带信号,这是设计调制解调器的第一步。
T=1; % 基带信号宽度,也就是频率
nb=100; % 定义传输的比特数
delta_T=T/200;
fs=1/delta_T; % 采样频率
fc=10/T; % 载波频率
SNR=0; % 信噪比
t=0:delta_T:nb*T-delta_T; % 限定t的取值范围(0,20000)
N=length(t); % 采样数
%%%%%%%%%%%产生基带信号%%%%%%%%%%%%%%%
data=randn(1,nb)>0.5; % 调用随机函数产生任意在0到1的1*nb的矩阵,大于0.5显示为1,小于0.5显示为0
data0=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵
for q=1:nb
data0((q-1)/delta_T+1:q/delta_T)=data(q); % 将基带信号变换成对应波形信号
end
figure(1)
subplot(2,1,1);
plot(data0),title('基带信号');
我们将上述代码改写为python实现,产生基带信号:
import numpy as np
from math import pi
import matplotlib.pyplot as plt
from pylab import mpl, text
from matplotlib.font_manager import FontProperties
font = FontProperties(fname="/root/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/simhei.ttf")
plt.rcParams['font.sans-serif']=['simhei']
import matplotlib
import scipy.signal as signal
import math
T = 1 #基带信号宽度,也就是频率
nb = 100 #定义传输的比特数
delta_T = T/200 #采样间隔
fs = 1/delta_T #采样频率
fc = 10/T #载波频率
SNR = 0 #信噪比
t = np.arange(0, nb*T, delta_T)
N = len(t)
# 产生基带信号
data = [1 if x > 0.5 else 0 for x in np.random.randn(1, nb)[0]] #调用随机函数产生任意在0到1的1*nb的矩阵,大于0.5显示为1,小于0.5显示为0
data0 = [] #创建一个1*nb/delta_T的零矩阵
for q in range(nb):
data0 += [data[q]]*int(1/delta_T) #将基带信号变换成对应波形信号
plt.figure(figsize=(14,10)) #设置图表大小
plt.axis([0, 20000, -2, 2])
plt.plot(data0)
plt.title('基带信号',fontproperties=font,fontsize=20)
plt.show()
1、matlab 设定时间取值范围采用t=0:delta_T:nbT-delta_T的方式,但是在python中需要改变一下t = np.arange(0, nbT, delta_T),使用随机数来设置。
2、在Python中列表+= 是拼接列表,然后,列表*C是长度变为C倍。
以上是运用matlab和python两种方式产生的基带信号,对比发现两种代码基本相似,只是语法不用。接下来将设计如何产生调制信号,同样使用matlab和python两种方式来设计算法。