MATLAB产生数字调制基带信号(python对比)

如何用MATLAB产生数字调制的基带信号,这是设计调制解调器的第一步。

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,20000N=length(t);                                     % 采样数
%%%%%%%%%%%产生基带信号%%%%%%%%%%%%%%%
data=randn(1,nb)>0.5;                            % 调用随机函数产生任意在011*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('基带信号');

MATLAB产生数字调制基带信号(python对比)_第1张图片

python实现

我们将上述代码改写为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()

MATLAB产生数字调制基带信号(python对比)_第2张图片

遇到的问题

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两种方式来设计算法。

你可能感兴趣的:(matlab,信号处理,python)