北京邮电大学世纪学院毕业设计(论文)
参考文献
[1] 樊昌信,詹道庸,徐炳祥,吴成柯.通信原理[M].北京:国防工业出版社,
1980:171~260.
[2] 薛鹏骞.电子与通信电路计算机仿真[M].北京:煤炭工业出版社,2003:
113~144.
[3] 邓华.MATLAB通信仿真及应用实例详解[M].北京:人民邮电出版社,2003:
99~115.
[4] 陈怀琛.MATLAB及其在理工课程中的应用指南[M].西安:西安电子科技大学
出版社,2002:146~180.
[5] 张谦.通信系统中MATLAB基础与仿真应用[M].西安:西安电子科技大学出版
社,2010:85~109.
[6] 孙屹.MATLAB通信仿真开发手册[M].北京:国防工业出版社,2005:138~168. [7] 王立宁,乐光新,詹菲.MATLAB与通信仿真[M].北京:人民邮电出版社,2000:
74~86.
[8] 约翰·G·普罗克斯.现代通信系统的使用MATLAB[M].西安:西安交通学出版
社,2001:95~121.
[9] 陈萍.现代通信实验系统的计算机仿真[M].北京:国防工业出版社,2003:
171~260.
[10] 孙亮.MATLAB语言与控制系统仿真[M].北京:北京工业大学出版社,2001:
64~83.
[11] William A Shay.Understanding Data Communications and Networks[M]:
Wadsworth Publishing Company,1998:162~164.
[12] William Stallings.Data and Computer Communications,Seventh Edition[M]:
Prentice Hall,2003:201~207.
30
北京邮电大学世纪学院毕业设计(论文)
附录
MATLAB仿真程序: 一.QPSK仿真
clear;
T=1; fc=10/T; ml=2; nb=100;
delta_T=T/200; fs=1/delta_T; SNR=0;
t=0:delta_T:nb*T-delta_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
% 将基带信号变换成对应波形信号 data0=zeros(1,nb/delta_T); for q=1:nb
data0((q-1)/delta_T+1:q/delta_T)=data(q); % end
% 发射的信号
data2=abs(fft(data1));
% 串并转换,将奇偶位数据分开 idata=datanrz(1:ml:(nb-1)); qdata=datanrz(2:ml:nb); % QPSK信号的调制
ich=zeros(1,nb/delta_T/2); for i=1:nb/2
ich((i-1)/delta_T+1:i/delta_T)=idata(i); end
for ii=1:N/2
a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii)); end
31
北京邮电大学世纪学院毕业设计(论文)
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); % 通过高斯信道再通过瑞利衰落信道 % QPSK 解调部分
% 解调部分(高斯信道)
idata2=s1.*a; % 这里面其实隐藏了一个串并转换的过程 qdata2=s1.*b; % 对应的信号与正余弦信号相乘
idata3=zeros(1,nb/2); % 建立1*nb数组,以存放解调之后的信号 qdata3=zeros(1,nb/2);
% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0 for n=1:nb/2
% A1(n)=sum(idata2((n-1)/delta_T+1:n/delta_T)); if sum(idata2((n-1)/delta_T+1:n/delta_T))>=0 idata3(n)=1;
else idata3(n)=0; end
% A2(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T)); if sum(qdata2((n-1)/delta_T+1:n/delta_T))>=0
32
北京邮电大学世纪学院毕业设计(论文)
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 end
% 将判决之后的数据存放进数组 demodata=zeros(1,nb);
demodata(1:ml:(nb-1))=idata3; % 存放奇数位 demodata(2:ml:nb)=qdata3; % 存放偶数位
%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平) demodata1=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵 for q=1:nb
demodata1((q-1)/delta_T+1:q/delta_T)=demodata(q); % 将极性码变成对应的波形信号 end
% 累计误码数
% abs(demodata-data)求接收端和发射端
% 数据差的绝对值,累计之后就是误码个数 Awgn_num_BER=sum(abs(demodata-data))
%%%%%%%%%%%%%%%%%%% % 解调部分(瑞利+高斯)
Ray_idata2=Ray_s.*a; Ray_qdata2=Ray_s.*b;
% Ray_idata3=zeros(1,nb/2); % Ray_qdata3=zeros(1,nb/2);
33