MSK、GMSK调制及相干解调Matlab仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MSK、GMSK调制及相干解调Matlab仿真实验目的:
1.掌握MSK调制、相干解调原理及特性;
2.了解MSK调制与GMSK调制的差别。
实验内容:
1.编写MATLAB程序仿真MSK调制及相干解调;
2.观察I、Q两路基带信号的特征及与输入NRZ码的关系;
3.观察I、Q调制解调过程中信号的变化;
4.对程序做修改,进行GMSK调制及解调仿真;
5.分析仿真中观察的数据,撰写实验报告。
仿真代码:
clear all
clc
global dt df t f N
close all
pi=3.1415926;
fc=5;
N=2^8;
L=8;
M=N/L;
Rb=2;
Tb=1/Rb;
dt=Tb/L;
df=1/(dt*N);
T=N*dt;
B=N*df/2;
t=[-T/2+dt/2:dt:T/2];
f=[-B+df/2:df:B];
EP=zeros(size(f));
EPg=zeros(size(f));
for ii=1:10;
for j=1:50;
b=sign(randn(1,M));
for i=1:L,s(i+[0:M-1]*L)=b;end
P=t2f(s);
P=P.*conj(P)/T;
EP=(EP*(j-1)+P)/j;
end
Ps=10*log10(EP+eps);
Bb=Tb/0.3;
alpha=sqrt(logm(2)/2/Bb^2);
H=exp(-alpha^2*f.^2);
a(1)=b(1);
for i=M:-1:2,a(i)=b(i)*b(i-1);end
for i=1:L,sa(i+[0:M-1]*L)=a;end
send=real(f2t(t2f(s).*H));
It=zeros(size(t));
for k=0:2*L:N-1;
kk=1:2:2*L;
kkk=1:L;
It(k+kk)=send(k+kkk+L);
It(k+kk+1)=send(k+kkk+L);
end
for k=N:-1:L+1,It(k)=It(k-L);end
Qt=zeros(size(t));
for k=0:2*L:N-1;
kk=1:2:2*L;
kkk=1:L;
Qt(k+kk)=send(k+kkk);
Qt(k+kk+1)=send(k+kkk);
end
subplot(2,1,1);
stem(b);
title('原始');
%x = input('xxx');
%Itt
Itt=It.*cos(pi*t/2/Tb);
%Qtt
Qtt=Qt.*sin(pi*t/2/Tb);
%GMSK 时域波形
gmsk=Itt.*cos(2*pi*fc*t)-Qtt.*sin(2*pi*fc*t); %GMSK 功率谱
PP=t2f(gmsk);
Pa=PP.*conj(PP)/T;
EPg=(EPg*(ii-1)+Pa)/ii;
end
Pgmsk=10*log10(EPg+eps);
%接收端
r=gmsk;
%接收端的低通滤波器,带宽为Rb
LPF=zeros(size(f));
ai=(B-Rb)/2/B*size(f);
aj=(B+Rb)/2/B*size(f);
for k=(ai(1,2):aj(1,2)),LPF(k)=1;end
%接收端上支路LPF的输出,与Itt相似(图九)RI=r.*cos(2*pi*fc*t);
RI=real(f2t(t2f(RI).*LPF));
RQ=-r.*sin(2*pi*fc*t);
RQ=real(f2t(t2f(RQ).*LPF));
%取样
RIt=RI(2*L:2*L:N);
RQt=RQ(L:2*L:N);
%码型串并转换
Rt=zeros(1,M);
Rt(2:2:M)=RIt(1:M/2);
Rt(1:2:M-1)=RQt(1:M/2);
%判决
Rt=sign(Rt);
clear j;
d(1)=j;
for i=2:M,d(i)=d(i-1).*j;end
e=Rt.*d;
for i=1:2:M,e(i)=imag(e(i));end
f=b-e;
for i=1:L,sy(i+[0:M-1]*L)=e;end
subplot(2,1,2);
stem(sy);
f2t
function x=f2t(X)
global dt df t f T N
X=[X(N/2+1:N),X(1:N/2)];
x=ifft(X)/dt;
t2f
function X=t2f(x)
global dt N t f T
H=fft(x);
X=[H(N/2+1:N),H(1:N/2)]*dt;