版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、通信系统综合设计与实践 题目基于Matlab的多进制正交幅度调制系统的仿真 院(系)名称信院通信系 专业名称通信工程 学生姓名 学生学号 指导教师 2012年5月20日 TOC o 1-3 h z u HYPERLINK l _Toc325385888 摘要 PAGEREF _Toc325385888 h I HYPERLINK l _Toc325385889 1正交幅度调制解调原理 PAGEREF _Toc325385889 h 1 HYPERLINK l _Toc325385890 1.1 正交幅度调制技术 PAGEREF _Toc325385890 h 1 HYPERLINK l _To
2、c325385891 1.2 QAM调制解调原理 PAGEREF _Toc325385891 h 4 HYPERLINK l _Toc325385892 1.2.1 QAM调制 PAGEREF _Toc325385892 h 4 HYPERLINK l _Toc325385893 1.2.2 QAM的解调和判决 PAGEREF _Toc325385893 h 5 HYPERLINK l _Toc325385894 1.3 QAM的误码率性能 PAGEREF _Toc325385894 h 6 HYPERLINK l _Toc325385895 2 多进制正交幅度(M-QAM)调制及相干解调原理
3、框图 PAGEREF _Toc325385895 h 7 HYPERLINK l _Toc325385896 2.1 正交调制原理框图 PAGEREF _Toc325385896 h 7 HYPERLINK l _Toc325385897 2.2 相干解调原理框图 PAGEREF _Toc325385897 h 8 HYPERLINK l _Toc325385898 3 基于MATLAB的多进制正交幅度(M-QAM)调制及相干解调设计与仿真 PAGEREF _Toc325385898 h 8 HYPERLINK l _Toc325385899 3.1 对系统进行分析与设计: PAGEREF _
4、Toc325385899 h 8 HYPERLINK l _Toc325385900 3.2 随机信号的生成 PAGEREF _Toc325385900 h 9 HYPERLINK l _Toc325385901 3.3 星座图映射 PAGEREF _Toc325385901 h 9 HYPERLINK l _Toc325385902 3.4 波形成形(平方根升余弦滤波器) PAGEREF _Toc325385902 h 12 HYPERLINK l _Toc325385903 3.5 调制 PAGEREF _Toc325385903 h 13 HYPERLINK l _Toc32538590
5、4 3.6 加入高斯白噪声之后解调 PAGEREF _Toc325385904 h 14 HYPERLINK l _Toc325385905 3.7 误码率曲线 PAGEREF _Toc325385905 h 17 HYPERLINK l _Toc325385906 3.8 16-QAM载波调制信号在AWGN信道下的性能 PAGEREF _Toc325385906 h 17 HYPERLINK l _Toc325385907 4 仿真结果及分析 PAGEREF _Toc325385907 h 19 HYPERLINK l _Toc325385908 5 结论与展望 PAGEREF _Toc32
6、5385908 h 22 HYPERLINK l _Toc325385909 5.1 本文的重要贡献 PAGEREF _Toc325385909 h 22 HYPERLINK l _Toc325385910 5.2 未来展望 PAGEREF _Toc325385910 h 23 HYPERLINK l _Toc325385911 参考文献 PAGEREF _Toc325385911 h 24 HYPERLINK l _Toc325385912 附录 PAGEREF _Toc325385912 h 25摘要正交幅度调制技术(QAM)是一种功率和带宽相对高效的信道调制技术,因此在大容量数字微波通信
7、系统、有线电视网络高速数据传输、卫星通信系统等领域得到了广泛使用。由于信道资源越来越紧张,许多数据传输场合二进制数字调制已无法满足需要。为了在有限信道带宽中高速率地传输数据,可以采用多进制(M进制,M2)调制方式,MPSK则是经常使用的调制方式,由于MPSK的信号点分布在圆周上,没有最充分地利用信号平面,随着M值的增大,信号最小距离急剧减小,影响了信号的抗干扰能力。MQAM称为多进制正交幅度调制,它是一种信号幅度与相位结合的数字调制方式,信号点不是限制在圆周上,而是均匀地分布在信号平面上,是一种最小信号距离最大化原则的典型运用,从而使得在同样M值和信号功率条件下,具有比MPSK更高的抗干扰能力
8、。本文是对QAM通信系统的研究。叙述了适用于数字微波系统的QAM调制解调方式,通过系统实验对正交幅度调制解调的过程、原理及性能进行了论证、分析,理论上讨论和说明了数字调制解调技术中影响系统性能的条件和因素。最后利用通信系统仿真软件MATLAB对16QAM数字调制与解调过程进行了仿真,并给出了16QAM在加性高斯白噪声条件下的误码率。实验及仿真的结果证明,多进制正交幅度调制解调易于实现,且性能良好,是未来通信技术的主要研究方向之一,并有广阔的应用前景。关键词:QAM 调制解调 星座图 误码率 1正交幅度调制解调原理1.1 正交幅度调制技术正交振幅调制(Quadrature Amplitude M
9、odulation,QAM)是一种振幅和相位联合键控。虽然MPSK和MDPSK等相移键控的带宽和功率方面都具有优势,即带宽占用小和比特噪声比要求低。但是由图1可见,在MPSK体制中,随着 图 1 8PSK信号相位M的增大,相邻相位的距离逐渐减小,使噪声容限随之减小,误码率难于保证。为了改善在M大时的噪声容限,发展出了QAM体制。在QAM体制中,信号的振幅和相位作为两个独立的参量同时受到调制。这种信号的一个码元可以表示为 (21)式中:k=整数;和分别可以取多个离散值。 式(21)可以展开为 (22)令 Xk = Akcosqk, Yk = -Aksinqk则式(21)变为 (23)和也是可以取
10、多个离散的变量。从式(23)看出,可以看作是两个正交的振幅键控信号之和。在式(21)中,若qk值仅可以取p/4和-p/4,Ak值仅可以取+A和-A,则此QAM信号就成为QPSK信号,如图2所示:图2 4QAM信号矢量图所以,QPSK信号就是一种最简单的QAM信号。有代表性的QAM信号是16进制的,记为16QAM,它的矢量图示于下图中:Ak图3 16QAM信号矢量图图中用黑点表示每个码元的位置,并且示出它是由两个正交矢量合成的。类似地,有64QAM和256QAM等QAM信号,如图4、图5所示。它们总称为MQAM调制。由于从其矢量图看像是星座,故又称星座调制。 图4 64QAM信号矢量图 图5 2
11、56QAM信号矢量图16QAM信号的产生方法主要有两种。第一种是正交调幅法,即用两路独立的正交4ASK信号叠加,形成16QAM信号,如图6所示。第二种方法是复合相AM图6 正交调幅法移法,它用两路独立的QPSK信号叠加,形成16QAM信号,如图7所示。图中 AMAM图7 复合相移法虚线大圆上的4个大黑点表示一个QPSK信号矢量的位置。在这4个位置上可以叠加上第二个QPSK矢量,后者的位置用虚线小圆上的4个小黑点表示。1.2 QAM调制解调原理 1.2.1 QAM调制正交幅度调制QAM是数字通信中一种经常利用的数字调制技术,尤其是多进制QAM具有很高的频带利用率,在通信业务日益增多使得频带利用率
12、成为主要矛盾的情况下,正交幅度调制方式是一种比较好的选择。正交幅度调制(QAM)信号采用了两个正交载波,每一个载波都被一个独立的信息比特序列所调制。发送信号波形如图1.2.1所示 图1.2.1 M=16QAM信号星座图式中和是电平集合,这些电平是通过将k比特序列映射为信号振幅而获得的。例如一个16位正交幅度调制信号的星座图如下图所示,该星座是通过用M4PAM信号对每个正交载波进行振幅调制得到的。利用PAM分别调制两个正交载波可得到矩形信号星座。QAM 可以看成是振幅调制和相位调制的结合。因此发送的QAM信号波形可表示为 如果那么QAM方法就可以达到以符号速率同时发送个二进制数据。图1.2.2给
13、出了QAM调制器的框图。图1.2.2 QAM调制器框图1.2.2 QAM的解调和判决假设在信号传输中存在载波相位偏移和加性高斯噪声。因此r(t)可以表示为其中是载波相位偏移,且将接收信号与下述两个相移函数进行相关如图2.2.1所示,相关器的输出抽样后输入判决器。使用图2.2.1中所示的锁相环估算接收信号的载波相位偏移,相移和对该相位偏移进行补偿。图2.2.1 QAM信号的解调和判决假设图中所示的时钟与接收信号同步,以使相关器的输出在适当的时刻及时被抽样。在这些条件下两个相关器的输出分别为其中噪声分量是均值为0,方差为的互不相关的高斯随机变量。最佳判决器计算距离量度 1.3 QAM的误码率性能
14、矩形QAM信号星座最突出的优点就是容易产生PAM信号可直接加到两个正交载波相位上,此外它们还便于解调。 对于下的矩形信号星座图(K为偶数),QAM信号星座图与正交载波上的两个PAM信号是等价的,这两个信号中的每一个上都有个信号点。因为相位正交分量上的信号能被相干判决极好的分离,所以易于通过PAM的误码率确定QAM的误码率。 M进制QAM系统正确判决的概率是:。式中是进制PAM系统的误码率,该PAM系统具有等价QAM系统的每一个正交信号中的一半平均功率。通过适当调整M进制PAM系统的误码率,可得: 式中是每个符号的平均信噪比。因此,因此M进制QAM的误码率为: 可以注意到,当K为偶数时,这个结果
15、对情形时精确的,而当K为奇数时,就找不到等价的进制PAM系统。如果使用最佳距离量度进行判决的最佳判决器,可以求出任意K=1误码率的的严格上限。=其中,是每比特的平均信噪比。2 多进制正交幅度(M-QAM)调制及相干解调原理框图2.1 正交调制原理框图正交调制原理框图2.2 相干解调原理框图 相干解调原理框图3 基于MATLAB的多进制正交幅度(M-QAM)调制及相干解调设计与仿真3.1 对系统进行分析与设计:首先进行系统的分析的设计,整个设计分为如下几个部分:随机序列的产生,序列的串并和并串转换,16QAM调制,星座图的绘制,16QAM解调,加入噪声,误码率的测量及绘图。3.2 随机信号的生成
16、 利用Matlab中的random_binary函数来产生0、1等概分布的随机信号。源代码如下所示: random_binary.m%产生二进制信源随机序列function info=random_binary(N)if nargin = 0, %如果没有输入参数,则指定信息序列为10000个码元 N=10000;end;for i=1:N, temp=rand; if (temp0.5), info(i)=0; % 1/2的概率输出为0 else info(i)=1; % 1/2的概率输出为1 endend;3.3 星座图映射对产生的二进制随机序列进行串并转换,分离出I分量、Q分量,然后再分
17、别进行电平映射。由于是调用matlab系统函数调制解调,在此将转换后边的序列进行四进制转换,方便后面的调制,再将转换好的序列通过调用qam()函数进行16qam调制,具体代码如下:代码如下:%串/并变换分离出I分量、Q分量,然后再分别进行电平映射I=x(1:2:nn-1); I,In=two2four(I,4*m);Q=x(2:2:nn); Q,Qn=two2four(Q,4*m); if Kbase=2; %基带成形滤波 I=bshape(I,fs,fb/4); Q=bshape(Q,fs,fb/4); end; y=I.*cos(2*pi*fc*t)-Q.*sin(2*pi*fc*t);
18、%调制二进制转换成四进制代码:two2four.m%二进制转换成四进制function y,yn=two2four(x,m);T=0 1;3 2; n=length(x); ii=1;for i=1:2:n-1; xi=x(i:i+1)+1; yn(ii)=T(xi(1),xi(2); ii=ii+1;end;yn=yn-1.5; y=yn; for i=1:m-1; y=y;yn;end;y=y(:); %映射电平分别为-1.5;0.5;0.5;1.5 画出星座图代码如下: constel.m%画出星座图function c=constel(x,fs,fb,fc);N=length(x);
19、m=2*fs/fb;n=fs/fc; i1=m-n; i=1; ph0=(i1-1)*2*pi/n; while i = N/m; xi=x(i1:i1+n-1); y=2*fft(xi)/n; c(i)=y(2); i=i+1; i1=i1+m;end; %如果无输出,则作图if nargout1; cmax=max(abs(c); ph=(0:5:360)*pi/180; plot(1.414*cos(ph),1.414*sin(ph),c); hold on; for i=1:length(c); ph=ph0-angle(c(i); a=abs(c(i)/cmax*1.414; plo
20、t(a*cos(ph),a*sin(ph),r*); end; plot(-1.5 1.5,0 0,k:,0 0,-1.5 1.5,k:); hold off; axis equal; axis(-1.5 1.5 -1.5 1.5);end;3.4 波形成形(平方根升余弦滤波器) 为了避免相邻传输信号之间的串扰,多元符号需要有合适的信号波形。方波是在本地数字信号处理时常见的波形,但在实际传输时这种方波并不合适。根据奈奎斯特第一准则,在实际通信系统中一般均使接收波形为升余弦滚降信号。这一过程由发送端的基带成形滤波器和接收端的匹配滤波器两个环节共同实现,因此每个环节均为平方根升余弦滚降滤波,两个环
21、节合成就实现了一个升余弦滚降滤波。实现平方根升余弦滚降信号的过程称为“波形成形”,通过采用合适的滤波器对多元码流进行滤波实现,由于生成的是基带信号,因此这一过程又称“基带成形滤波”。 代码如下: bshape.m%基带升余弦成形滤波器function y=bshape(x,fs,fb,N,alfa,delay);%设置默认参数if nargin6; delay=8; end;if nargin5; alfa=0.5; end;if nargin4; N=16; end;b=firrcos(N,fb,2*alfa*fb,fs);y=filter(b,1,x);3.5 调制调制代码: qam.mf
22、unction y,I,Q=qam(x,Kbase,fs,fb,fc);T=length(x)/fb; m=fs/fb;nn=length(x);dt=1/fs; t=0:dt:T-dt;%串/并变换分离出I分量、Q分量,然后再分别进行电平映射I=x(1:2:nn-1); I,In=two2four(I,4*m);Q=x(2:2:nn); Q,Qn=two2four(Q,4*m); if Kbase=2; %基带成形滤波 I=bshape(I,fs,fb/4); Q=bshape(Q,fs,fb/4); end; y=I.*cos(2*pi*fc*t)-Q.*sin(2*pi*fc*t); %
23、调制 3.6 加入高斯白噪声之后解调为了简化程序和得到可靠的误码率,我们在解调时并未从已调信号中恢复载波,而是直接产生与调制时一模一样的载波来进行信号解调。 加入不同强度的高斯白噪声代码: SNR_in_dB=8:2:24; %AWGN信道信噪比for j=1:length(SNR_in_dB) y_add_noise=awgn(y2,SNR_in_dB(j); %加入不同强度的高斯白噪声 y_output=qamdet(y_add_noise,fs,fb,fc); %对已调信号进行解调解调时先设计一个巴特沃斯滤波器,然后将I分量、Q分量并/串转换,最终恢复成码元序列xn,然后进行解调。 解调
24、的代码如下: %QAM信号解调function xn,x=qamdet(y,fs,fb,fc);dt=1/fs; t=0:dt:(length(y)-1)*dt;I=y.*cos(2*pi*fc*t); Q=-y.*sin(2*pi*fc*t);b,a=butter(2,2*fb/fs); %设计巴特沃斯滤波器I=filtfilt(b,a,I);Q=filtfilt(b,a,Q);m=4*fs/fb;N=length(y)/m; n=(.6:1:N)*m; n=fix(n);In=I(n); Qn=Q(n); xn=four2two(In Qn); %I分量Q分量并/串转换,最终恢复成码元序列
25、xnnn=length(xn); xn=xn(1:nn/2);xn(nn/2+1:nn); xn=xn(:); xn=xn;四进制转换成二进制代码如下: %四进制转换成二进制function xn=four2two(yn);y=yn; ymin=min(y);ymax=max(y); ymax=max(ymax abs(ymin);ymin=-abs(ymax); yn=(y-ymin)*3/(ymax-ymin); %设置门限电平,判决I0=find(yn=0.5 & yn=1.5 & yn=2.5); yn(I3)=ones(size(I3)*3;%一位四进制码元转换为两位二进制码元T=0
26、 0;0 1;1 1;1 0;n=length(yn); for i=1:n; xn(i,:)=T(yn(i)+1,:);end; xn=xn; xn=xn(:); xn=xn; 3.7 误码率曲线 误码率代码如下: numoferr=0; for i=1:N if (y_output(i)=info(i), numoferr=numoferr+1; end; end; Pe(j)=numoferr/N; %统计误码率end;figure;semilogy(SNR_in_dB,Pe,red*-); grid on;xlabel(SNR in dB); ylabel(Pe);title(16QA
27、M调制在不同信道噪声强度下的误码率); 3.8 16-QAM载波调制信号在AWGN信道下的性能 16-QAM载波调制信号在AWGN信道下的性能代码如下: clear allnsymbol=100000; %每种信噪比下的发送符号数M=16; %16-QAMgraycode=0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10; %Gray编码规则 EsN0=5:20; %信噪比,Es/N0snr1=10.(EsN0/10); %信噪比转换为线性值msg=randint(1,nsymbol,M); %消息数据msg1=graycode(msg+1); %Gray映射msgm
28、od=qammod(msg1,M); %基带16-QAM调制spow=norm(msgmod).2/nsymbol; %求每个符号的平均功率for indx=1:length(EsN0) sigma=sqrt(spow/(2*snr1(indx); %根据符号功率求噪声功率 rx=msgmod+sigma*(randn(1,length(msgmod)+j*randn(1,length(msgmod); y=qamdemod(rx,M); decmsg=graycode(y+1); err,ber(indx)=biterr(msg,decmsg,log2(M); %误比特率 err,ser(i
29、ndx)=symerr(msg,decmsg); %误符号率end P4=2*(1-1/sqrt(M)*qfunc(sqrt(3*snr1/(M-1);ser1=1-(1-P4).2; %理论误符号率ber1=1/log2(M)*ser1; %理论误比特率semilogy(EsN0,ber,-ko,EsN0,ser,-k*,EsN0,ser1,EsN0,ber1,-k.);title(16-QAM载波调制信号在AWGN信道下的性能)xlabel(Es/N0);ylabel(误比特率和误符号率)legend(误比特率,误符号率,理论误符号率,理论误比特率) 4 仿真结果及分析 图一 已调信号图形
30、 图二 已调信号频谱 图三 16QAM星座图 图四 16QAM调制在不同信道噪声强度下的误码率 图五 16-QAM载波调制信号在AWGN信道下的性能 由图四图五可看到当信噪比小的情况下,仿真曲线和理论曲线差距略大,而随着信噪比的增大,仿真曲线越来越逼进理论曲线。在同样信噪比时,误符号率比误比特率(误码率)要大。简单分析不难看出,由于理论误码率曲线是建立在误符号率除以4的基础上的,而这一条件的前提是出现误符号的时候,一个符号中只有一个bit位发生了错误,这表明误码率比较低,也就是说明信噪比比较大。所以,当信噪比比较小的时候,理论计算的误码率的值要小于仿真得到的值。5 结论与展望 在现代通信中,提
31、高频谱利用率一直是人们关注的焦点之一。近年来,随着通信业务需求的增长,寻找频谱利用率高的数字调制方式已成为数字通信系统设计,研究的主要目标之一。正交振幅调制QAM( Quadrature Amplitude Modulation )就是一种频谱利用率很高的调制方式,其在中、大容量数字微波通信系统、有线电视网络高速数据传输、卫星通信系统等领域得到了广泛应用。5.1 本文的重要贡献(1) 对QAM调制与解调技术的基本知识做了概括性的总结与分析。(2) 实现了基于MATLAB的仿真。 作为一种现代调制技术,QAM相比较传统调制技术,有着很多优于传统调制技术的特性,使得它在中、大容量数字微波通信系统、
32、有线电视网络高速数据传输、卫星通信系统和蜂窝系统等系统中得到大规模应用,大大提高系统通信质量和通信效率。 MATLAB在通信仿真中有着重要的应用,MATLAB/Simulink是通信系统计算机仿真的强大工具,本文提供了一个实际仿真的例子。实际的信道是很复杂的,在实际的应用中应根据不同的要求选用不同的调制方式。本文利用MATLAB/Simulink 对M =16 进制正交幅度调制系统进行了仿真,从理论上验证16进制正交幅度调制系统工作原理,为实际应用和科学合理地设计正交幅度调制系统,提供了便捷、高效、直观的重要方法。5.2 未来展望 在现代通信中,提高频谱利用率一直是人们关注的焦点之一。近年来,
33、随着通信业务需求的增长,寻找频谱利用率高的数字调制方式已成为数字通信系统设计,研究的主要目标之一。正交振幅调制QAM( Quadrature Amplitude Modulation )就是一种频谱利用率很高的调制方式,其在中、大容量数字微波通信系统、有线电视网络高速数据传输、卫星通信系统等领域得到了广泛应用。 在移动通信中,随着微蜂窝和微微蜂窝的出现,使得信道传输特性发生了很大变化,过去在传统蜂窝系统中不能应用的正交振幅调制也引起了人们的重视。QAM数字调制器作为DVB系统的前端设备,接受来自编码器、服务器、DVB网关、视频服务器等设备的TS流,进行RS编码,卷积编码和QAM数字调制,输出的
34、射频信号可以直接在有线电视网上传送,同时也可根据需要选择中频输出,它以其灵活的配置和优越的性能指标,广泛的应用于数字有线电视传输域和数字MMDS系统。作为国际上移动通信技术专家十分重视的一种信号调制方式之一,正交振幅调制在移动通信中频谱利用率一直是人们关注的焦点之一,随着微蜂窝(Microcell)和微微蜂窝(Picocell)系统的出现,使得信道的传输特性发生了很大变化,接收机和发射机之间通常具有很强的支达分量,以往在蜂窝系统中不能应用的但频谱利用率很高的WAM已经引起人们的重视,许多学者已对16QAM及其他变形的QAM在PCN中的应用进行了广泛深入地研究。随着研究不断深入,相信QAM调制解
35、调技术必将有更广阔的应用前景。参考文献樊昌信、曹丽娜编著。通信原理(第6版)。北京:国防工业出版社,2011.1重印黄载禄、殷蔚华编著。通信原理。北京:科学出版社,2005周炯槃、庞沁华等编著。通信原理(上)。北京:北京邮电大学出版社,2002(美)普埃克等著;叶芝慧等译。通信系统工程(第二版)。北京:电子工业出版社,2002.7刘雪勇编著。详解MATLAB/Simulink通信系统建模与仿真(配视频教程)。北京:电子工业出版社,2011.11附录源程序代码:main_plot.mclear;clc;echo off;close all;N=10000; %设定码元数量fb=1; %基带信号频
36、率fs=32; %抽样频率fc=4; %载波频率,为便于观察已调信号,我们把载波频率设的较低Kbase=2; % Kbase=1,不经基带成形滤波,直接调制; % Kbase=2,基带经成形滤波器滤波后,再进行调制info=random_binary(N); %产生二进制信号序列y,I,Q=qam(info,Kbase,fs,fb,fc); %对基带信号进行16QAM调制y1=y; y2=y; %备份信号,供后续仿真用T=length(info)/fb; m=fs/fb;nn=length(info);dt=1/fs; t=0:dt:T-dt; subplot(211); %便于观察,这里显示
37、的已调信号及其频谱均为无噪声干扰的理想情况%由于测试信号码元数量为10000个,在这里我们只显示其总数的1/10plot(t(1:1000),y(1:1000),t(1:1000),I(1:1000),t(1:1000),Q(1:1000),0 35,0 0,b:);title(已调信号(In:red,Qn:green);%傅里叶变换,求出已调信号的频谱n=length(y); y=fft(y)/n; y=abs(y(1:fix(n/2)*2;q=find(y1e-04); y(q)=1e-04; y=20*log10(y);f1=m/n; f=0:f1:(length(y)-1)*f1;su
38、bplot(223);plot(f,y,r);grid on; title(已调信号频谱); xlabel(f/fb); %画出16QAM调制方式对应的星座图subplot(224); constel(y1,fs,fb,fc); title(星座图);SNR_in_dB=8:2:24; %AWGN信道信噪比for j=1:length(SNR_in_dB) y_add_noise=awgn(y2,SNR_in_dB(j); %加入不同强度的高斯白噪声 y_output=qamdet(y_add_noise,fs,fb,fc); %对已调信号进行解调 numoferr=0; for i=1:N
39、if (y_output(i)=info(i), numoferr=numoferr+1; end; end; Pe(j)=numoferr/N; %统计误码率end;figure;semilogy(SNR_in_dB,Pe,red*-); grid on;xlabel(SNR in dB); ylabel(Pe);title(16QAM调制在不同信道噪声强度下的误码率);random_binary.m%产生二进制信源随机序列function info=random_binary(N) if nargin = 0, %如果没有输入参数,则指定信息序列为10000个码元 N=10000;end;
40、for i=1:N, temp=rand; if (temp0.5), info(i)=0; % 1/2的概率输出为0 else info(i)=1; % 1/2的概率输出为1 endend;qam.mfunction y,I,Q=qam(x,Kbase,fs,fb,fc);%T=length(x)/fb; m=fs/fb;nn=length(x);dt=1/fs; t=0:dt:T-dt;%串/并变换分离出I分量、Q分量,然后再分别进行电平映射I=x(1:2:nn-1); I,In=two2four(I,4*m);Q=x(2:2:nn); Q,Qn=two2four(Q,4*m); if K
41、base=2; %基带成形滤波 I=bshape(I,fs,fb/4); Q=bshape(Q,fs,fb/4); end; y=I.*cos(2*pi*fc*t)-Q.*sin(2*pi*fc*t); %调制qamdet.m%QAM信号解调function xn,x=qamdet(y,fs,fb,fc);dt=1/fs; t=0:dt:(length(y)-1)*dt;I=y.*cos(2*pi*fc*t); Q=-y.*sin(2*pi*fc*t);b,a=butter(2,2*fb/fs); %设计巴特沃斯滤波器I=filtfilt(b,a,I);Q=filtfilt(b,a,Q);m=
42、4*fs/fb;N=length(y)/m; n=(.6:1:N)*m; n=fix(n);In=I(n); Qn=Q(n); xn=four2two(In Qn); %I分量Q分量并/串转换,最终恢复成码元序列xnnn=length(xn); xn=xn(1:nn/2);xn(nn/2+1:nn); xn=xn(:); xn=xn;bshape.m%基带升余弦成形滤波器function y=bshape(x,fs,fb,N,alfa,delay);%设置默认参数if nargin6; delay=8; end;if nargin5; alfa=0.5; end;if nargin4; N=1
43、6; end;b=firrcos(N,fb,2*alfa*fb,fs);y=filter(b,1,x);two2four.m%二进制转换成四进制function y,yn=two2four(x,m);T=0 1;3 2; n=length(x); ii=1;for i=1:2:n-1; xi=x(i:i+1)+1; yn(ii)=T(xi(1),xi(2); ii=ii+1;end;yn=yn-1.5; y=yn; for i=1:m-1; y=y;yn;end;y=y(:); %映射电平分别为-1.5;0.5;0.5;1.5four2two.m%四进制转换成二进制function xn=fo
44、ur2two(yn);y=yn; ymin=min(y); ymax=max(y); ymax=max(ymax abs(ymin);ymin=-abs(ymax); yn=(y-ymin)*3/(ymax-ymin); %设置门限电平,判决I0=find(yn=0.5 & yn=1.5 & yn=2.5); yn(I3)=ones(size(I3)*3;%一位四进制码元转换为两位二进制码元T=0 0;0 1;1 1;1 0;n=length(yn); for i=1:n; xn(i,:)=T(yn(i)+1,:);end; xn=xn; xn=xn(:); xn=xn;constel.m%画
45、出星座图function c=constel(x,fs,fb,fc);N=length(x); m=2*fs/fb;n=fs/fc; i1=m-n; i=1; ph0=(i1-1)*2*pi/n; while i = N/m; xi=x(i1:i1+n-1); y=2*fft(xi)/n; c(i)=y(2); i=i+1; i1=i1+m;end; %如果无输出,则作图if nargout1; cmax=max(abs(c); ph=(0:5:360)*pi/180; plot(1.414*cos(ph),1.414*sin(ph),c); hold on; for i=1:length(c
46、); ph=ph0-angle(c(i); a=abs(c(i)/cmax*1.414; plot(a*cos(ph),a*sin(ph),r*); end; plot(-1.5 1.5,0 0,k:,0 0,-1.5 1.5,k:); hold off; axis equal; axis(-1.5 1.5 -1.5 1.5);end;附录资料:不需要的可以自行删除 C语言图形模式速成第一节 图形模式的初始化Turbo C 提供了非常丰富的图形函数,所有图形函数的原型均在graphics. h 中,本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出
47、等函数。另外,使用图形函数时要确保有显示器图形驱动程序*.BGI,同时将集成开发环境options/Linker中的Graphics lib选为on,只有这样才能保证正确使用图形函数。 不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。设置屏幕为图形模式,可用下列图形初始化函数:void far initgraph(int far *gdriver, int far *gmode
48、,char *path);其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见graphics. h。图形驱动程序由Turbo C出版商提供,文件扩展名为.BGI。 根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、 VGA 图形适配器就调用驱动程序EGAVGA.BGI。#include stdio.h#include graphics.hint main()int gdriver, gmode;gdriver=VGA;gmode=VGAHI;initgraph(&gdriver, &gmod
49、e, C:TC2.0BGI);bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/getch();closegraph();return 0;有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序用于不同图形驱动器,Turbo C 提供了一个自动检测显示器硬件的函数,其调用格式为:void far detectgraph(int *gdriver, *gmode);其中gdriver和gmode的意义与上面相同。 自动进行硬件测试后进行图形初始化:#include stdio.h#include graphics.hint main()int gd
50、river, gmode;detectgraph(&gdriver, &gmode); /*自动测试硬件*/printf(the graphics driver is %d, mode is %dn,gdriver,gmode); /*输出测试结果*/getch();initgraph(&gdriver, &gmode, C:TC2.0BGI);/* 根据测试结果初始化图形*/bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/getch();closegraph();return 0;上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但
51、Turbo C提供了一种更简单的方法, 即用gdriver=DETECT 语句后再跟initgraph()函数就行了。采用这种方法后,上例可改为:#include stdio.h#include graphics.hint main()int gdriver=DETECT, gmode;initgraph(&gdriver, &gmode, C:TC2.0BGI);bar3d(50, 50, 150, 30, 50, 1);getch();closegraph();return 0;另外,Turbo C 提供了退出图形状态的函数closegraph(),其调用格式为:void far clos
52、egraph(void);第二节 屏幕颜色的设置和清屏函数对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turbo C中分别用下面两个函数: 设置背景色: void far setbkcolor(int color);设置作图色: void far setcolor(int color);其中color 为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜色的符号常数及数值见graphics.h。清除图形屏幕内容但不清除图形背景使用清屏函数,其调用格式如下: voide far cleardevice(void);#include stdio.h#include
53、 graphics.hint main()int gdriver, gmode, i,aa;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI); /*图形初始化*/setbkcolor(0); /*设置图形背景*/cleardevice();for(i=0; i=15; i+)setcolor(i); /*设置不同作图色*/circle(320, 240, 20+i*10); /*画半径不同的圆*/getch();for(i=0; i=15; i+)setbkcolor(i); /*设置不同背景色*/cleardevice();circ
54、le(320, 240, 20+i*10);getch();aa=getmaxcolor();printf(maxcolor=%d,aa);getch();closegraph();return 0;另外,TURBO C也提供了几个获得现行颜色设置情况的函数。 int far getbkcolor(void); 返回现行背景颜色值。int far getcolor(void); 返回现行作图颜色值。int far getmaxcolor(void); 返回最高可用的颜色值。第三节 基本画图函数基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。 、画点. 画点函数
55、 void far putpixel(int x, int y, int color); 该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640 x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。关于点的另外一个函数是: in
56、t far getpixel(int x, int y); 它获得当前点(x, y)的颜色值。 II、有关坐标位置的函数 int far getmaxx(void);返回x轴的最大值。int far getmaxy(void);返回y轴的最大值。int far getx(void); 返回游标在x轴的位置。void far gety(void); 返回游标有y轴的位置。void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+
57、dx, y+dy)的位置,移动过程中不画点。、画线I. 画线函数TURBO C提供了一系列画线函数: void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。void far linerel(int dx, int dy); 画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。void far circle(int x, int y, int radius); 以(x, y)为圆
58、心,radius为半径,画一个圆。void far arc(int x, int y, int stangle, int endangle,int radius); 以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。在TURBO C中规定x轴正向为0 度,逆时针方向旋转一周, 依次为90,180, 270和360度(其它有关函数也按此规定,不再重述)。 void ellipse(int x, int y, int stangle, int endangle,int xradius,int yradius);以(x, y)为中心,xrad
59、ius,yradius为x轴和y轴半径,从角stangle 开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时, 画出一个完整的椭圆。void far rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。 void far drawpoly(int numpoints, int far *polypoints); 画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2 倍顶点数个无素。每一个顶点
60、的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints 的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。下面举一个用drawpoly()函数画箭头的例子。#include stdio.h#include graphics.hint main()int gdriver, gmode, i;int arw16=200,102,300,102,300,107,330,100,300,93,300,98,200,98,200,102;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 8642-2025热喷涂抗拉结合强度的测定
- 全国农机安全培训课件
- 单兵话术作战指南
- 销售实战沟通技巧
- 中医科医患关系防范指南
- 近代医患关系和谐典范
- 克罗地亚介绍
- 光纤生产培训课件模板图
- 医院医患关系岗位介绍
- 光影人物介绍
- 2025年夏季山东高中学业水平合格考地理试卷试题(含答案)
- 爆破备案工作报告
- 企业现金流管理课件
- 旧电梯拆除合同协议书
- 燃气行业工作危害分析(JHA+LEC)评价记录表
- 山东省济南市钢城区(五四学制)2024-2025学年八年级上学期1月期末考试数学试卷
- 【苏州工学院智能建造研究院】2025中国低空经济产业链全面解析报告
- 个人与团队管理-形考任务3(客观题10分)-国开-参考资料
- 车间现场管理岗位职责模版(2篇)
- 中国当代文学专题-003-国开机考复习资料
- 2024届上海市松江区初三一模数学试题及答案
评论
0/150
提交评论