参考文献
[1]赵静,张瑾.基于Matlab的通信系统仿真[M].北京:北京航空航天大学出版社,2007.9 [2]王幕坤,刘文责.通信原理[M].石家庄:哈尔滨工业大学出版社,1995. [3]樊昌信,曹丽娜.通信原理(第6版)[M].北京:国防工业出版社,2008.3. [4]王兴亮.通信系统原理教程[M].西安:西安电子科技大学出版社,2007:90.105. [5]张志勇,徐彦琴.Matlab教程—基于6.x版本[M].北京:清华大学出版社,2008.
[6]施阳.Matlab语言精要及动态仿真工具Simulink.[M].西安:西北工业大学出版社, 1997. [7]邵玉斌.Matlab/Simulink通信系统建模与仿真实例分析[M].北京:清华大学出版社,2008.
37
附 录
Matlab程序:
T=0.001; % 基带信号宽度,也就是频率 fc=12/T; % 载波频率
ml=2; % 调制信号类型的一个标志位 nb=100; % 传输的比特数 delta_T=T/200; % 采样间隔 fs=1/delta_T; % 采样频率 SNR=0; % 信噪比
t=0:delta_T:nb*T-delta_T; % 限定t的取值范围 N=length(t); % 采样数 %------------------------- 调制部分 % 基带信号的产生 data=randn(1,nb)>0.5; datanrz=data.*2-1; data1=zeros(1,nb/delta_T); for q=1:nb
data1((q-1)/delta_T+1:q/delta_T)=datanrz(q); end
% 串并转换,将奇偶位数据分开 idata=datanrz(1:ml:(nb-1)); qdata=datanrz(2:ml:nb); % QDPSK信号的调制 ich=zeros(1,nb/delta_T/2); for i=1:nb/2
ich((i-1)/delta_T+1:i/delta_T)=idata(i); end
38
for ii=1:N/2
a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii)); end
idata1=ich.*a; qch=zeros(1,nb/2/delta_T); for j1=1:nb/2
qch((j1-1)/delta_T+1:j1/delta_T)=qdata(j1); end for jj=1:N/2
b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj)); end
qdata1=qch.*b;
s=idata1+qdata1; ss=abs(fft(s));
%---------------------------- 瑞利衰落信道和高斯信道 % 瑞利衰落信道
ray_ich=raylrnd(0.8,1,nb/2/delta_T); ray_qch=raylrnd(0.8,1,nb/2/delta_T); Ray_idata=idata1.*ray_ich; Ray_qdata=qdata1.*ray_qch; Ray_s=Ray_idata+Ray_qdata;
% 高斯信道
s1=awgn(s,SNR); s11=abs(fft(s1)); s111=s1+s;
Awgn_s=awgn(Ray_s,SNR); % 通过高斯信道再通过瑞利衰落信道 %----------------------------- QDPSK 解调部分 % 解调部分(高斯信道)
39
idata2=s1.*a; qdata2=s1.*b; idata3=zeros(1,nb/2); qdata3=zeros(1,nb/2);
% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0 for n=1:nb/2
if sum(idata2((n-1)/delta_T+1:n/delta_T))>=0 idata3(n)=1; else idata3(n)=0; end
if sum(qdata2((n-1)/delta_T+1:n/delta_T))>=0 qdata3(n)=1; else qdata3(n)=0; end end
% 为了显示星座图,将信号进行处理 idata4=zeros(1,nb/2); qdata4=zeros(1,nb/2); for n=1:nb/2
Awgn_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_ichsum(n)>=0 idata4(n)=1; else idata4(n)=0; end
Awgn_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_qchsum(n)>=0 qdata4(n)=1; else qdata4(n)=0; end
40