《通信系统的计算机模拟第十一讲》由会员分享,可在线阅读,更多相关《通信系统的计算机模拟第十一讲(78页珍藏版)》请在金锄头文库上搜索。
1、1,通信系统的计算机模拟,第十一讲,2,第十讲 回顾,将均匀分布随机变量映射成任意pdf逆变换法 直方图法 舍弃法 产生不相关的高斯随机变量 均匀变量求和法 瑞利随机变量到高斯随机变量的映射 极坐标法 MATLAB实现 确定任意的功率谱密度或自相关函数,3,7.7 PN序列发生器,在很多应用中尤其是在同频领域中会用到伪噪声(PN)序列发生器。 PN序列常用来近似具有均匀概率密度函数的随机变量。 PN序列发生器可以有很多表示形式,最常见也是我们要集中讨论的形式,如图7-21所示。,4,作用,在仿真中,使用PN序列最重要的一个原因是为了建立数据源模型。 通过使用PN序列发生器,能用尽可能短的仿真时
2、间,产生具有给定长度的所有可能的比特组合。,5,组成,PN序列发生器由三个基本部分组成:N级移位寄存器、模二加法器和连接向量。 这个连接向量具体定义了移位寄存器各级与模二加法器之间的连接。它确定了发生器的性能特点,并由以下多项式定义,(7-99),6,性质,可以证明,PN序列发生器输出序列的最大周期是(7-100) 当且仅当多项式是本原多项式时,可以达到这个周期。 PN序列发生器输出的自相关函数如图7-22所示,这里我们假设数据值(符号)为1。 若或是L的整数倍,则自相关函数等于1; 若,则自相关函数-1/L,并且在L足够大时,趋近于零。 可见,具有长周期的PN序列,其自相关函数近似为冲激函数
3、。所以,跟期望的一样,功率谱密度近似为白色的。PN序列有很多有趣的特性,在仿真中我们关心的特性包括以下几个:,注:本原多项式:一个N阶多项式g(D)能整除Dk+1的最小整数k是k=2N-1,7,8,仿真中我们关心的特性,序列几乎是平衡的。也就是说,在序列的一个周期中,1的个数比0的个数只多出一个。在适当的位置上额外添加一个0,则序列平衡。 所有可能的比特组合都会出现一个周期中,这里全0序列除外,但包括全1序列。(注意:如果所有的移位寄存器包含二进制0,则序列发生器会陷于全0的死循环。若已有N-1个0,再添加一个0,则序列平衡,得到的是deBruijn序列)。 虽然自相关函数是周期的,但其波形与
4、随机的二进制波形几乎完全相同。,9,基于N级移位寄存器的PN序列发生器的设计,要找到一个N阶的本原多项式。在N较大时,很难找到这样的本原多项式,幸运的是,文献13提供了大量本原多项式的表格。,10,开发步骤,11,例,12,pntaps = 0 0 1 0 0 0 0 0 0 1; % shift register taps pninitial = 0 0 0 0 0 0 0 0 0 1; % initial shift register state pndata = zeros(1,1023); % initialize output vector samp_per_sym = 5; % s
5、amples per symbol pnregister = pninitial; % initialize shift register n = 0; % initialize counter kk = 0; % set terminator indicator,13,while kk = 0n = n+1; % increment counterpndata(1,n) = pnregister(1,1); % save outputfeedback = rem(pnregister*pntaps),2); % calculate feedbackpnregister = feedback,
6、pnregister(1,1:9); % increment registerif pnregister = pninitial; kk = 1; end % reset termination End,14,text = The period is ,num2str(n,15),.; disp(text) % display period pndata=replicate(pndata,samp_per_sym); % replicate data kn = n*samp_per_sym; % length of output vector pndata = 2*pndata - 1; %
7、make output +/- one a = fft(pndata); b = a.*conj(a); % PSD of data Rm = real(ifft(b)/kn; % autocorrelation x1 = (0:length(Rm)-1)/samp_per_sym; x2 = 0:100;,15,% Now we can plot the results. subplot(3,1,1) plot(x1,Rm,.k); ylabel(Rm) subplot(3,1,2) stem(x2,Rm(1:101),.k); ylabel(Partial Rm) subplot(3,1,
8、3) stem(x2,pndata(1:101),.k); ylabel(First 100 outputs) axis(0 100 -1.5 1.5);,16,注意,该程序作了一个测试,以保证PN序列发生器确实是全周期。(对本例,执行程序后返回的序列周期正好等于N=10时的全周期1023。)该程序还产生了自相关函数图、自相关函数的前101个采样以及发生器输出端的前101个采样。对采样率为1采样/符号时的结果如图7-24所示,若将采样率改为5采样/符号,对应的结果如图7-25所示。,17,18,19,7.8 信号处理,在系统输入是随机的从而输出也是随机的这个前提下,线性系统的几个输入输出关系,
9、我们对以下几个基本结论感兴趣: 系统输入均值和输出均值之间的关系 系统输入方差和输出方差之间的关系 输入-输出互相关 系统输入和系统输出的自相关和功率谱密度之间的关系 这些对仿真研究很有用的关系,在系统输入是一个随机过程样本函数的情况下,给我们提供了信号处理的基本工具。接下来的整个分析过程中,假设所研究的系统是线性的和固定不变的,并假设系统的输入具有广义平稳性。,20,7.8.1 输入-输出均值,21,22,7.8.2 输入-输出互相关,23,7.8.3 输出自相关函数,24,25,26,7.8.4 输入-输出方差,27,第八章 后处理,将仿真产生的数据处理成有用的形式 后处理器通常是图形密集
10、型的视觉显示比数字列表更容易理解,而后者是仿真程序最常见的数据输出。 不同系统的误比特率曲线比包含同样信息的数据表格能更快地传达信息 后处理程序可能引入(也可能不引入)相当的计算复杂度。 有些后处理器只是简单地取得仿真产生的数据,对其进行适当的格式编排后,产生合适的图形输出。 产生误比特概率或误符号概率作为函数的曲线, 作最少处理来产生图形输出的后处理器的其他例子还包括显示信号波形、眼图和散点图的后处理器。 有些后处理子程序会涉及相当多的数据处理,它们中多数要涉及到某种估计,一个简单的例子就是直方图的产生,它是对概率密度函数的估计 更复杂的例子有延迟、信码的系统中,从信道误符号率到译码后的误比
11、特率的映射。,28,基本图形方法,系统实例/4 DQPSK传输,29,发射信号的相位偏移由d(k)和q(k)的值以及前一符号周期的相位偏移(t1)决定,例如 0010110111,30,例如 0010110111 3/4, - ,3/4,0, /4,31,波形、眼图和散点图,如果同相信道信号xd(t)画在平在(D,t)上,正交信号xq(t)画在平面上,就产生了为参数的三维信号。,Q,D,t,32,眼图,眼图给出系统性能的一种定性量度。 明晰张开的眼孔通常表明好的性能 而模糊的眼孔往往表明差的性能 眼孔的大小跟符号同步器所要求的精度有关 尽管眼图不能对系统性能提供定量的量度,但很难想像一个性能优
12、异的系统会有不明确的眼图。,33,假设用示波器显示波形,并且示波器在垂直虚线处触发,结果就是如图8-4(b)所示的三段眼图,34,例8-1,产生并显示DQPSK系统中的一些重要信号,仿真这个系统并产生图形输出。,35,m = 200; bits = 2*m; % number of symbols and bits sps = 10; % samples per symbol iphase = 0; % initial phase order = 5; % filter order bw = 0.2; % normalized filter bandwidth% initialize vect
13、ors data = zeros(1,bits); d = zeros(1,m); q = zeros(1,m); dd = zeros(1,m); qq = zeros(1,m); theta = zeros(1,m); thetaout = zeros(1,sps*m); % set direct and quadrature bit streams data = round(rand(1,bits); dd = data(1:2:bits-1); qq = data(2:2:bits);,36,% main programs theta(1) = iphase; % set initia
14、l phase thetaout(1:sps) = theta(1)*ones(1,sps); for k=2:mif dd(k) = 1phi_k = (2*qq(k)-1)*pi/4;elsephi_k = (2*qq(k)-1)*3*pi/4;end,37,theta(k) = phi_k + theta(k-1);for i=1:spsj = (k-1)*sps+i;thetaout(j) = theta(k);end end d = cos(thetaout); q = sin(thetaout); b,a = butter(order,bw); df = filter(b,a,d)
15、; qf = filter(b,a,q);,38,% postprocessor for plotting kk = 0; % set exit counter while kk = 0 % test exit counter k = menu(pi/4 QPSK Plot Options,.Unfiltered pi/4 QPSK Signal Constellation,.Unfiltered pi/4 QPSK Eye Diagram,.Filtered pi/4 QPSK Signal Constellation,.Filtered pi/4 OQPSK Eye Diagram,.Unfiltered Direct and Quadrature Signals,.Filtered Direct and Quadrature Signals,.Exit Program);,39,1滤波前的/4DQPSK信号星座图 2滤波前的/4DQPSK信号眼图 3滤波后的/4DQPSK信号星府图 4滤波后的/4DQPSK信号眼图 5滤波前的同相和正交信号 6滤波后的同相和正交信号 7退出程序(返回MATLAB命令提示符),