图4
图5
实验结果分析:
11
由图4、5可以得到高斯信道下的调制信号,高斯噪声,调制输出功率谱密度曲线和QPSK在高斯噪声的影响下,调制信号的波形发生了明显的变化,其功率谱密度函数相对于图1
信号的星座图。
中的调制信号的功率谱密度只发生了微小的变化,原因在于高斯噪声是一个均值为0的白噪声,在各个频率上其功率是均匀的,因此此结果是真确的。星座图反映可接收信号早高斯噪声的影响下发生了误码,但是大部分还是保持了原来的特性。
5.3先通过瑞利衰落信道再通过高斯信道的仿真。实验结果如图6、7、8所示:
图6
图7
12
图8
实验结果分析:
由图7可以得到瑞利衰落信道前后的星座图,调制信号的曲线图及其功率谱密度。最后图8显示的是高斯信道和瑞利衰落信道的误码率对比。由图可知瑞利衰落信道下的误码率比高斯信道下的误码率高。
至此,仿真实验就全部完成。
六、 总结
由此次仿真实验可知,由于高斯信道和瑞利信道的影响,波形发生了明显的变化,功率谱密度也发生变化,星座图可反映在噪声影响下产生的误码。从仿真解调前与调制后的图对比可知仿真正确。通过图8可知瑞利信道下的误码率和误比特率明显高于高斯信道,并与理论值基本符合。
随着通信事业的发展,通信系统的设计也会越来越复杂,通过计算机的仿真,可以大大地降低通信过程实验成本。本文设计出一个QPSK仿真模型,以衡量QPSK在理想信道,高斯白噪声信道,以及先通过瑞利再通过高斯信道的性能,通过仿真,可以更好地了解QPSK系统的工作原理,而且为硬件的研制提供一定的参考作用。
七、 体会
这次的通信专业方向设计让我把通信原理的一些内容又重新复习了一遍,中间出了很多问
13
题,比如用matlab7.0版本就不能把几个图整合到一起,也就是不能使用subplot函数,会出现
Undefined function or variable \的错误.而我后来又换成了matlab7.8就可以实现该
功能。我把程序发给老师后老师狠狠的教育了我,不应该依靠高版本的优化功能把在低版本不能实现的功能强制执行,所以我还有很多地方需要学习,包括对误码率进行计算的两个函数我也是借鉴的网上的程序。这次方向设计让我学会了很多,也认识到了自己还有很多方面的欠缺。
八、 参考文献
[1] 李人厚、张平安.精通MATLAB,西安交通大学 1997.3 [2] 肖明波,通信系统仿真原理与无线应用机械工业出版社 [3] 万永革编著,通信系统仿真原理与无线应用,北京科学出版社
[4] 郭文彬、桑林,通信原理—基于MATLAB的计算机仿真,北京邮电大学出版社,2006.1 [5]网上资料
附件: 主程序:
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; % 限定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); % 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
14
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); % 通过高斯信道再通过瑞利衰落信道
%----------------------------- QPSK 解调部分
% 解调部分(高斯信道)
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
15