仿真报告1:模拟通信系统抗噪声性能仿真

调制解调器基本原理图

在这里插入图片描述

调制器

调制器信号时域分析

m ( t ) = c o s ( 2 π f m t ) , f m = 10 H z , m(t)=cos(2\pi f_{m}t), f_{m}=10Hz, m(t)=cos(2πfmt),fm=10Hz,
c ( t ) = c o s ( 2 π f c t ) , f c = 100 H z c(t)=cos(2\pi f_{c}t),f_{c}=100Hz c(t)=cos(2πfct),fc=100Hz
则通过调制器得到 s ( t ) s(t) s(t)信号为
s ( t ) = c o s ( 2 π f m t ) c o s ( 2 π f c t ) s(t)=cos(2\pi f_{m}t)cos(2\pi f_{c}t) s(t)=cos(2πfmt)cos(2πfct)

from matplotlib import pyplot as plt
import numpy as np
from scipy.fftpack import fft,ifft
from matplotlib.pylab import mpl

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

#定义m(t)、s(t)
t = np.linspace(-np.pi/6,np.pi/6,1024,endpoint=True)
fm = 10 #Hz
mt = np.cos(2*np.pi*fm*t)
fc = 100 #Hz
ct = np.cos(2*np.pi*fc*t)
plt.subplot(421)#画c(t)
plt.plot(t,ct)
plt.xlabel("Time t (s)")
plt.ylabel("振幅 c(t)")
plt.subplot(423)
plt.plot(t,mt)
plt.xlabel("Time t (s)")
plt.ylabel("振幅 m(t)")
#plt.show()

运行得到 m ( t ) 、 c ( t ) 、 s ( t ) m(t)、c(t)、s(t) m(t)c(t)s(t)时域波形
在这里插入图片描述

快速傅里叶变换FFT

已知了时域信号
m ( t ) = c o s ( 2 π f m t ) , f m = 10 H z , m(t)=cos(2\pi f_{m}t), f_{m}=10Hz, m(t)=cos(2πfmt),fm=10Hz,
c ( t ) = c o s ( 2 π f c t ) , f c = 100 H z c(t)=cos(2\pi f_{c}t),f_{c}=100Hz c(t)=cos(2πfct),fc=100Hz
其相应频域信号
m ( f ) = 1 2 [ δ ( f − f m ) + δ ( f + f m ) ] m(f)=\frac{1}{2}[\delta(f-f_{m})+\delta(f+f_{m})] m(f)=21[δ(ffm)+δ(f+fm)]
c ( f ) = 1 2 [ δ ( f − f c ) + δ ( f + f c ) ] c(f)=\frac{1}{2}[\delta(f-f_{c})+\delta(f+f_{c})] c(f)=21[δ(ffc)+δ(f+fc)]
由于 s ( t ) s(t) s(t) m ( t ) 、 c ( t ) m(t)、c(t) m(t)c(t)的时域乘积,则 s ( f ) s(f) s(f) m ( f ) 、 c ( f ) m(f)、c(f) m(f)c(f)的频域卷积。通过冲激函数的频移性质易得
s ( f ) = 1 4 [ δ ( f − f m − f c ) + δ ( f − f m + f c ) + δ ( f + f m − f c ) + δ ( f + f m + f c ) ] s(f)=\frac{1}{4}[\delta(f-f_{m}-f_{c})+\delta(f-f_{m}+f_{c})\\ \quad\quad+\delta(f+f_{m}-f_{c})+\delta(f+f_{m}+f_{c})] s(f)=41[δ(ffmfc)+δ(ffm+fc)+δ(f+fmfc)+δ(f+fm+fc)]
程序验证

#c(f)
cf = fft(ct)
N = len(cf)
f = np.arange(N)
abs_cf = np.abs(cf)
abs_cf = abs_cf/N #归一化
f = f[range(int(N/2))]#单边化
abs_cf = abs_cf[range(int(N/2))]#单边化
plt.subplot(422)
plt.plot(f,abs_cf)
plt.xlabel("Frequency f (hz)")
plt.ylabel("振幅 c(f)")

#m(f)
mf = fft(mt)
N = len(mf)
f = np.arange(N)
abs_mf = np.abs(mf)
abs_mf = abs_mf/N #归一化
f = f[range(int(N/2))]#单边化
abs_mf = abs_mf[range(int(N/2))]#单边化
plt.subplot(424)
plt.plot(f,abs_mf)
plt.xlabel("Frequency f (hz)")
plt.ylabel("振幅 m(f)")

#s(t) = m(t)×s(t)
st = mt*ct
plt.subplot(425)
plt.plot(t,st)
plt.xlabel("Time t (s)")
plt.ylabel("振幅 s(t)")
#plt.show()

#对s(t)进行傅里叶变换,s(f) = m(f)*s(f)
sf = fft(st)
N = len(sf)
f = np.arange(N)
abs_sf = np.abs(sf)
abs_sf = abs_sf/N #归一化
#单边化
f = f[range(int(N/2))]
abs_sf = abs_sf[range(int(N/2))]
plt.subplot(426)
plt.plot(f,abs_sf)
plt.xlabel("Frequency f (hz)")
plt.ylabel("振幅 s(f)")
#plt.show()

频域波形
在这里插入图片描述

解调器

在这里插入图片描述

解调部分

s d ( t ) = s ( t ) ⋅ c ( t ) s_{d}(t)=s(t)·c(t) sd(t)=s(t)c(t)

sdt = st*ct
plt.subplot(427)
plt.plot(t,sdt)
plt.xlabel("Time t (s)")
plt.ylabel("振幅 Sd(t)")

s d ( t ) ⟶ F F T s d ( f ) s_{d}(t)\stackrel{FFT}{\longrightarrow}s_{d}(f) sd(t)FFTsd(f)

#Sd(f)
sdf = fft(sdt)
N = len(sdf)
f = np.arange(N)
abs_sdf = np.abs(sdf)
abs_sdf = abs_sdf/N
#单边化
f = f[range(int(N/2))]
abs_sdf = abs_sdf[range(int(N/2))]
plt.subplot(428)
plt.plot(f,abs_sdf)
plt.xlabel("Frequency f (Hz)")
plt.ylabel("振幅 Sd(f)")

plt.tight_layout()
#plt.show()

s d ( t ) 、 s d ( f ) s_{d}(t)、s_{d}(f) sd(t)sd(f)波形
在这里插入图片描述

滤波部分——h(t)设计

还记得我们最开始定义的 m ( t ) m(t) m(t)吗? m ( t ) m(t) m(t)的频率 f m f_{m} fm为10Hz
通过这一步我们要把 s d ( f ) s_{d}(f) sd(f)中属于 m ( t ) m(t) m(t)的那一部分频率给滤出来
观察 s d ( f ) s_{d}(f) sd(f)波形,可以发现我们其实只需要把波形中10Hz出的峰峰给保留下来,其他的峰峰都给置零就行了
在这里插入图片描述
从而我们只需要用一个合适的矩形信号 h ( f ) h(f) h(f)在频域和 s d ( f ) s_{d}(f) sd(f)相乘就可以了
在这里插入图片描述
频域矩形信号对应时域抽样信号
R e c t ( f ) ⟶ i f f t S a ( t ) = s i n ( w t ) w t Rect(f)\stackrel{ifft}{\longrightarrow}Sa(t)=\frac{sin(wt)}{wt} Rect(f)ifftSa(t)=wtsin(wt)

#h(t)
ht = 30*(np.sin(30*np.pi*t)/(30*np.pi*t))
plt.figure()
plt.subplot(221)
plt.plot(t,ht)
plt.xlabel("Time t (s)")
plt.ylabel("振幅 h(t)")

#h(f)
hf = fft(ht)
N = len(hf)
f = np.arange(N)
abs_hf = np.abs(hf)
abs_hf = abs_hf/N #归一化
#单边化
f = f[range(int(N/2))]
abs_hf = abs_hf[range(int(N/2))]
plt.subplot(222)
plt.plot(f,abs_hf)
plt.xlabel("Frequency f (Hz)")
plt.ylabel("振幅 h(f)")

#解调:mo(f) = sd(f)×h(f)
mof = sdf * hf
f = np.arange(len(mof))
plt.subplot(223)
f1 = f[range(int(N/2))]#单边化
abs_mof = np.abs(mof)[range(int(N/2))]/len(f)#单边归一化
plt.plot(f1,abs_mof)
plt.xlabel("Frequency f (Hz)")
plt.ylabel("振幅 mo(f)")

#mot
mot = ifft(mof)/len(f)*2
N = len(mot)
t = np.arange(N)/len(f)
t = t[range(int(N/2))]#单边化
mot = mot[range(int(N/2))]#单边化
plt.subplot(224)
plt.plot(t,mot)
plt.xlabel("Time t (s)")
plt.ylabel("振幅 mo(t)")

plt.tight_layout()
plt.show()

在这里插入图片描述

结论与分析

原始信号 m ( t ) m(t) m(t)与调制解调信号 m o ( t ) m_{o}(t) mo(t)比对

m ( t ) m(t) m(t)在这里插入图片描述
m o ( t ) m_{o}(t) mo(t)
在这里插入图片描述
上图可见 m ( t ) m(t) m(t) m o ( t ) m_{o}(t) mo(t)时域波形一致,继续增加时域抽样点的个数可以进一步提高解调信号的还原精度

频域信号 m ( f ) m(f) m(f) m o ( f ) m_{o}(f) mo(f),可z见二者频域波形一致,均为10Hz
在这里插入图片描述

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
正交鉴频实验是一种用于无线通信系统的频率选择性信道评估方法。它通过在发射端使用正交频分复用技术,将不同的信号分配到不同的频率带宽上进行传输,然后在接收端利用相应的信号处理技术对这些信号进行提取和分离。这种方法可以有效地降低信号之间的干扰,并提升系统的容量和性能。 鉴频实验是对通信系统中频率响应进行估计和分析的过程。通过对已知频率信号的传输和接收过程进行观测和分析,可以得到频率响应的估计值。这个过程中,需要使用恢复状态信息(CSI)对信道进行估计,以便在接收端对信号进行解码。 在进行正交鉴频实验的过程中,可以使用MS(移动站)进行仿真连接。MS是指移动通信系统中的终端设备,可以模拟真实的移动通信环境,并进行实验和测试。通过对MS进行仿真连接,可以模拟无线信道中的各种干扰和传输条件,从而更真实地评估正交鉴频系统性能。 正交鉴频实验的MS仿真连接包括了发射端和接收端的设置和配置。在发射端,需要设置正交频分复用的参数,将不同的信号分配到不同的频带宽度上进行传输。在接收端,需要配置合适的信号处理算法和恢复状态信息的估计方法,以便对信号进行解码和恢复原始数据。 通过对正交鉴频实验的MS仿真连接,我们可以评估和优化正交鉴频系统性能,包括信号传输质量、系统容量和干扰能力等。这对于无线通信系统的设计和优化是非常重要的。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值