课设-基于MATLAB的BPSK调制 (完本). 下载本文

沈阳理工大学装备工程学院课程设计说明书

通过带通滤波后信号的局部图如3.15所示:

图3.15 接收信号通过带通滤波(部分)

可知经过带通滤波后,时域图中信号有一定成度的改善,波形突刺减少,一定程度的恢复成原来的波形。

信号通过带通滤波后的幅频响应如3.16所示:

图3.16 接受信号通过带通滤波后的幅频响应

19

沈阳理工大学装备工程学院课程设计说明书

分析频域图,在频带中多余的加性白噪声得到一定的抑制,而很好的保留了载频附近的频率信息。

3.5.2通过FFT实现载波的直接频率估计

对于没有抑制载波的调制信号来说,使用FFT变换后通常载波频率幅度是最大值,可以通过检测已调信号的整个频率范围最大值来确定最大值。但是,一般情况下,由于已调信号经过信道后,频谱受到损伤,出现一定程度的失真,降低了用最大值来确定载波频率的方法的可靠性,此时需要使用另外的方法来恢复载波频率。

载波恢复流程框图如3.17所示:

图3.17 载波恢复流程图

r(t)X2r2(t)BPFrp(t)~cos(4?fct??)

如图3.17所示,一般可以在带通滤波器后使用非线性模块平方器,r(t)是接受信号,由基带信号signal(t)和载波cos信号相乘组成,平方器的输出项为

222(t ) ?) 3.1 r signal (t ) cos (2 ? f c t

又根据等式 2cos2(x)?1?cos(2x),改写3.1为

224? r (t ) ? (1 / 2 ) signal ( t)[ 1 ? cos( f c t)] 3.2

将signal2(t)用其平均值和偏移量的和来表示

2signal2(t)?signalavg?v(t)3.3

20

沈阳理工大学装备工程学院课程设计说明书

) ?? fc)cos(因此 r ( t ( 1 / 2 )[ signal avg ? v ( t) ? signal avg cos( 4 t ) ? v ( t 4 ? f )] 3.4 ct以2fc为中心的窄带带通滤波器只能让r2(t)中的纯余弦项通过,而且还会抑制当中的直流成分,低频部分v(t)和向上边频了的v(t)也不能通过。带通滤波器的输出约为

222122) ? BPFt)}signal(t ) cos(? ? r p ( t { r ( ? avg 4 ? f ct ) 3.5

2

式中,? 是相位偏移,是带通滤波器引入的。对于接受机来说,?值是已知的,故rp(t)可用来估算出载波的频率。

MATLAB代码:

rsc=r;

q=rsc.^2; % 通过平方器 fl=500; ff=[0 .0100 .0104 .0136 .0140 1]; fa=[0 0 1 1 0 0];

h=remez(fl,ff,fa); % 生成带通滤波器 rp=filter(h,1,q); % 再通过带通滤波 fftrBPF=fft(rp); % 对rp信号进行FFT变换

[m,imax]=max(abs(fftrBPF(1:end/2))); % 找到最大值,返回最大值和最大值所在数组点 ssf=(0:length(rp))/(Ts*length(rp)); %建立储存频率的数组

freqS=ssf(imax); %找出存储频率数组对应最大幅度的频率

运行程序结果: freqS = 600

由结果可知估测频率fc=300Hz。

21

沈阳理工大学装备工程学院课程设计说明书

3.5.3自适应(迭代)算法验证恢复频率

对于前面已经估测处了载波的频率,此时可以由freqS为假设值,利用自适应算法对恢复的载波频率进行再估测和验证。

在通信中的许多问题能够被设计成最优化问题要解决这种问题需要三个基本的步骤:

(1)设定一个目标-选择一个目标函数

(2)选择一个实现目标的方法-最大化或最大化这个目标函数 (3)检验以确定这个方法能达到预期效果

“设定一个目标函数”通常包括寻找一个可以最大化或可以最小化的函数,定位最大和最小值为所要解决问题提供了有用的信息。这个函数的选择必须使它和它的导数的值能基于一些信息计算出来。

有很多的方法可以用来实现最大化或最小化过程。有的时候是可以使用直接的方法,如,如果为了找到多项式达到最小值的点,只要直接找到它的导数并置零就可以得到解答。但是很多时候,不可能有如此简单的解决方法,递归方法(自适应方法)通常在信号运算中有很好的应用。

自适应算法通常以最陡下降为目的,也可以称之为最陡下降法,最陡下降自适应算法从最初猜测的位置开始,算出从估计值开始哪个是最陡下降的方向,并沿着这条下降方向做出最新的估算,为了运用最陡下降法来最小化多项式J(x),假设在时间k处的x的当前估算是可以得到的,表示为x[k]在时间k?1的估算可以用下式:

x[k?1]?x[k]??dJ(x)dxx?x[k]3.6

式中,?是很小正数,称为步长,而J(x)的梯度是当前x[k]点计算出来的,当k重复计算,依次迭代运算,最终接近最小值

对于接受信号为r(t),设freqS为f,合理的算法为尝试最小化下式:

J(f)?1LPF{[r(t)?cos(2?ft)]}23.7

22