Matlab环境中16-QAM的性能仿真
- 格式:docx
- 大小:55.28 KB
- 文档页数:3
QPSK和16QAM调制下MIMO-OFDM系统Matlab仿真实现一、引言MIMO-OFDM系统是一种融合了多输入多输出(MIMO)和正交频分复用(OFDM)技术的无线通信系统,能够显著提高数据传输速率和系统可靠性。
在MIMO-OFDM系统中,调制方式的选择对系统性能具有重要的影响。
QPSK和16QAM是两种常用的调制方式,它们在MIMO-OFDM系统中的应用对系统的性能和效率有着明显的影响。
本文将针对QPSK和16QAM调制下的MIMO-OFDM系统进行Matlab仿真实现,以研究两种调制方式对系统性能的影响。
二、MIMO-OFDM系统基本原理MIMO-OFDM系统由MIMO技术和OFDM技术组成。
MIMO技术利用多个天线发射和接收信号,通过空间分集和空间复用的方式提高系统的性能和可靠性。
而OFDM技术将带宽分成多个子载波,并采用正交调制方式传输数据,能够有效克服多径干扰和频率选择性衰落,提高系统的抗干扰能力和频谱利用率。
MIMO-OFDM系统将MIMO技术和OFDM技术结合,充分发挥两者的优势,实现了高速率和高可靠性的无线通信。
1. Matlab仿真环境搭建需要在Matlab环境中搭建MIMO-OFDM系统的仿真环境。
在Matlab中,可以使用Communications Toolbox和Wireless Communications Toolbox工具箱来搭建MIMO-OFDM系统的仿真环境。
通过这些工具箱,可以方便地构建MIMO通道模型、OFDM调制器和解调器等系统组件,并进行参数设置和仿真运行。
2. QPSK调制方式在QPSK调制方式下,将复数信号映射到星座图上,每个符号点代表两个比特。
QPSK调制方式可以实现较高的传输速率和频谱利用率,适用于高速率和大容量的无线通信场景。
在MIMO-OFDM系统中,QPSK调制方式通常用于传输速率要求较高的场景,例如视频传输和高速数据传输等。
2. MIMO-OFDM系统仿真实现与QPSK调制方式类似,利用Matlab中的Wireless Communications Toolbox,可以进行16QAM调制下MIMO-OFDM系统的仿真实现。
姓名:NikeyMATLAB环境下环境下环境下环境下16QAM调制及解调仿真调制及解调仿真调制及解调仿真调制及解调仿真程序说明程序说明程序说明程序说明一、正交调制及相干解调原理框图正交调制原理框图相干解调原理框图二、MQAM调制介绍及本仿真程序的几点说明 MQAM可以用正交调制的方法产生,本仿真中取M=16,即幅度和相位相结合的16个信号点的调制。
为了观察信道噪声对该调制方式的影响,我们在已调信号中又加入了不同强度的高斯白噪声,并统计其译码误码率。
为了简化程序和得到可靠的误码率,我们在解调时并未从已调信号中恢复载波,而是直接产生与调制时一模一样的载波来进行信号解调。
三、仿真结果图附源程序代码:main_plot.m clear;clc;echo off;close all;N=10000; %设定码元数量fb=1; %基带信号频率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;%便于观察,这里显示的已调信号及其频谱均为无噪声干扰的理想情况%由于测试信号码元数量为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(y<1e-04; y(q=1e-04; y=20*log10(y;f1=m/n; f=0:f1:(length(y-1*f1;subplot(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_dBy_add_noise=awgn(y2,SNR_in_dB(j; %加入不同强度的高斯白噪声y_output=qamdet(y_add_noise,fs,fb,fc; %对已调信号进行解调 numoferr=0; for i=1:Nif (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(Nif nargin == 0, %如果没有输入参数,则指定信息序列为10000个码元 N=10000; end;for i=1:N,temp=rand;if (temp<0.5,info(i=0; % 1/2的概率输出为0elseinfo(i=1; % 1/2的概率输出为1endend;qam.m function [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; %调制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=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分量并/串转换,最终恢复成码元序列xn nn=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 nargin<6; delay=8; end;if nargin<5; alfa=0.5; end;if nargin<4; N=16; 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=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(I0=zeros(size(I0;I1=find(yn>=0.5 & yn<1.5; yn(I1=ones(size(I1;I2=find(yn>=1.5 & yn<2.5; yn(I2=ones(size(I2*2; I3=find(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 %画出星座图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 nargout<1;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;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;。
毕业设计说明书基于MATLAB的16QAM通信系统仿真摘要随着现在的通信技术的飞速发展,特别是移动通信技术,因频谱资源的限制,传统的通信系统容量开始不能满足目前用户需求,因此通信技术专家越来越关注频带利用率的问题。
如何提高频谱利用率以及高功率谱密度是我们追求的目标。
而正交振幅调制(Quadrature Amplitude Modulation,QAM)是一种振幅和相位联合键控,由于高频谱利用率和高功率谱密度等优点,它已成为了大容量数字微波、宽带无线接入和无线视频通信的一种重要技术方案。
本论文先介绍了16进制的正交振幅调制信号(16QAM)的调制解调原理,再利用MATLAB平台构建完整的16QAM通信系统,实现16QAM的调制解调系统的仿真,以及分析该系统性能。
以此证明16QAM调制技术相对其他调制方式的优点。
关键词:调制解调;正交振幅调制;MATLAB仿真ABSTRACTWith the rapid development of modern communication technology, especially mobile communications technology, the capacity of traditional communication systems can not meet the requirements of the current user. And because of the limited spectrum resource, the problem of bandwidth efficiency is growing concerned of experts in the field of communications. So finding the way that how to improve the spectrum efficiency and high power spectral density is our goal. Quadrature amplitude modulation (QAM) with its high spectral efficiency and high power spectral density and other advantages, becomes important to those communication application that include the large-capacity digital microwave technology solutions, broadband wireless access and wireless video communications, and so on.This article describes the principle of modulation and demodulation of 16QAM, then builds a complete communication system of 16QAM based on MATLAB, which is to realize the simulation of 16QAM modem system and to analyse the performance of the system.It can prove that 16QAM modulation technology is more superior than the other.Key words:modem system; qam;matlab目录1 绪论 (1)1.1 课题研究的意义 (1)1.2 国内外研究状况 (1)1.3 研究内容与章节安排 (2)2 课题理论基础 (3)2.1 调制解调的定义 (3)2.2 正交振幅调制 (4)2.2.1 QAM简介 (4)2.2.2 16QAM调制解调原理 (6)3 基于MATLAB的16QAM通信系统仿真 (9)3.1 MATLAB简介 (9)3.1.1 MATLAB介绍 (9)3.1.2 MATLAB语言特点 (9)3.2 16QAM调制解调仿真程序流程框图 (10)3.3 调制仿真模块 (11)3.3.1 信号源 (11)3.3.2 串/并变换 (11)3.3.3 2-4电平转换 (11)3.3.4 成形滤波器 (12)3.3.5 调制 (14)3.3.6 画星座图 (15)3.4 已调信号的噪声叠加 (16)3.5 解调仿真模块 (16)3.5.1 低通滤波器 (16)3.5.2 4-2电平转换 (16)3.5.3 并/串变换 (17)3.5.4 解调 (17)3.6 仿真结果 (18)4 16QAM通信系统的性能分析 (21)4.1 16QAM抗噪声性能 (21)4.2 16QAM频带利用率 (22)4.3 16QAM信号在AWGN信道下的性能 (22)4.4. 16QAM和16PSK的性能比较 (23)5 总结与展望 (25)5.1 总结 (25)5.2 未来展望 (26)参考文献 (27)致谢 (29)附录:主程序 (30)1 绪论1.1 课题研究的意义随着现代的通信技术的飞速发展,特别是移动通信技术,因为频谱资源的限制,传统的通信系统的容量开始不能满足目前用户的需求,因此通信技术专家越来越关注频带利用率的问题。
基于matlab的QAM信号性能仿真引言正交振幅调制,这是近年来被国际上移动通信技术专家十分重视的一种信号调制方式。
QAM是数字信号的一种调制方式,在调制过程中,同时以载波信号的幅度和相位来代表不同的数字比特编码,把多进制与正交载波技术结合起来,进一步提高频带利用率。
单独使用振幅和相位携带信息时,不能最充分利用信号平面,这可由矢量图中信号矢量端点的分布直观观察到。
多进制振幅调制时,矢量端点在一条轴上分布;多进制相位调制时,矢量点在一个圆上分布。
随着进制数M的增大,这些矢量端点之间的最小距离也随之减少。
但如果充分利用整个平面,将矢量端点重新合理地分布,则可能在不减小最小距离的情况下,增加信号的端点数。
基于上述概念引出的振幅与相位结合的调制方式被称为数字复合调制方式,一般的复合调制称为幅相键控(APK),2个正交载波幅相键控称为正交振幅调制。
随着通信业迅速的发展,传统通信系统的容量已经越来越不能满足当前用户的要求,而可用频谱资源有限,也不能靠无限增加频道数目来解决系统容量问题。
另外,人们亦不能满足通信单一的语音服务,希望能利用移动电话进行图像等多媒体信息的通信。
但由于图像通信比电话需要更大的信道容量。
高效、可靠的数字传输系统对于数字图像通信系统的实现很重要,正交幅度调制是数字通信中一种经常利用的数字调制技术,尤其是多进制QAM具有很高的频带利用率,在通信业务日益增多使得频带利用率成为主要矛盾的情况下,正交幅度调制方式是一种比较好的选择。
一、现代数字调制技术概述所有无线通信的基础,调制是一个将数据传送到无线电调制是载波用于发射的过程。
如今的大多数无线传输都是数字过程,并且可用的频谱有限,因此调制方式变得前所未有地重要。
如今的调制的主要目的是上将尽可能多的数据压缩到最少的频谱中。
此目标被称为频谱效率,量度数据在分配的带宽中传输的速度。
此度量的单位是比特每秒每赫兹(b/s/Hz)。
现在已现出现了多种用来实现和提高频谱效率的技术,下面将常用的几种数字调制技术进行简单介绍。
% 16QAM 系统仿真function [ ber_AWGN,ber_Ray] = M16QAM()EbN0dB=1:3:30;EbN0dB1=1:10;N=4*100000;for ii=1:length(EbN0dB)sigma2(ii)=2.5/(2*4*(10^(EbN0dB(ii)/10)));sigma21(ii)=2.5/(2*4*(10^(EbN0dB1(ii)/10)));bits=randint(1,N);%调制s=M16QAM_modulate(bits,length(bits(:)));% Rayleign信道干扰noise=sqrt(sigma2(ii))*( randn(1,N/4)+ 1i*randn(1,N/4) );h= sqrt(0.5)*(randn(1,N/4) + 1i*randn(1,N/4) );receiver=s.*h+noise; %Rayleign 衰减信道% 高斯信道干扰noise1=sqrt(sigma21(ii))*( randn(1,N/4)+ 1i*randn(1,N/4) );receiver1=s+noise1; %高斯信道% 信道均衡receiver = receiver./h;%解调并计算误码率Rayleign信道demodata = M16QAM_demodulate( receiver,length(receiver(:)) );errCount=sum(abs(bits-demodata));ber_Ray(ii)=errCount/N;%解调并计算误码率高斯信道demodata = M16QAM_demodulate( receiver1,length(receiver1(:)) );errCount=sum(abs(bits-demodata));ber_AWGN(ii)=errCount/N;endend% 16QAM 调制function [ s ] = M16QAM_modulate( bits,N)ii=0;for i=1:4:Nii=ii+1;if bits(i)==0&&bits(i+1)==0&&bits(i+2)==0&&bits(i+3)==0s(ii)=sqrt(2)/2*exp(1i*pi/4);elseif bits(i)==1&&bits(i+1)==0&&bits(i+2)==0&&bits(i+3)==0s(ii)=sqrt(2)/2*exp(1i*3*pi/4);elseif bits(i)==1&&bits(i+1)==0&&bits(i+2)==1&&bits(i+3)==0s(ii)=sqrt(2)/2*exp(1i*5*pi/4);elseif bits(i)==0&&bits(i+1)==0&&bits(i+2)==1&&bits(i+3)==0s(ii)=sqrt(2)/2*exp(1i*7*pi/4);elseif bits(i)==0&&bits(i+1)==1&&bits(i+2)==0&&bits(i+3)==0s(ii)=sqrt(10)/2*exp(1i*atan(1/3));elseif bits(i)==0&&bits(i+1)==0&&bits(i+2)==0&&bits(i+3)==1s(ii)=sqrt(10)/2*exp(1i*atan(3));elseif bits(i)==1&&bits(i+1)==0&&bits(i+2)==0&&bits(i+3)==1s(ii)=sqrt(10)/2*exp(1i*(atan(1/3)+pi/2));elseif bits(i)==1&&bits(i+1)==1&&bits(i+2)==0&&bits(i+3)==0s(ii)=sqrt(10)/2*exp(1i*(pi-atan(1/3)));elseif bits(i)==1&&bits(i+1)==1&&bits(i+2)==1&&bits(i+3)==0s(ii)=sqrt(10)/2*exp(1i*(atan(1/3)+pi));elseif bits(i)==1&&bits(i+1)==0&&bits(i+2)==1&&bits(i+3)==1s(ii)=sqrt(10)/2*exp(1i*(3*pi/2-atan(1/3)));elseif bits(i)==0&&bits(i+1)==0&&bits(i+2)==1&&bits(i+3)==1s(ii)=sqrt(10)/2*exp(1i*(atan(1/3)+3*pi/2));elseif bits(i)==0&&bits(i+1)==1&&bits(i+2)==1&&bits(i+3)==0s(ii)=sqrt(10)/2*exp(1i*(2*pi-atan(1/3)));elseif bits(i)==0&&bits(i+1)==1&&bits(i+2)==0&&bits(i+3)==1s(ii)=sqrt(2)*3/2*exp(1i*pi/4);elseif bits(i)==1&&bits(i+1)==1&&bits(i+2)==0&&bits(i+3)==1s(ii)=sqrt(2)*3/2*exp(1i*3*pi/4);elseif bits(i)==1&&bits(i+1)==1&&bits(i+2)==1&&bits(i+3)==1s(ii)=sqrt(2)*3/2*exp(1i*5*pi/4);elseif bits(i)==0&&bits(i+1)==1&&bits(i+2)==1&&bits(i+3)==1s(ii)=sqrt(2)*3/2*exp(1i*7*pi/4);endendend% 16 QAM 解调function [ demodata ] = M16QAM_demodulate( receiver ,N)A=[0 1 0 1; -1 0 0 1;-1 0 -1 0;0 1 -1 0;1 inf 0 1;0 1 1 inf;-1 0 1 inf;-inf -1 0 1;-inf -1 -1 0;-1 0 -inf -1;0 1 -inf -1;1 inf -1 0;1 inf 1 inf;-inf -1 1 inf;-inf -1 -inf -1;1 inf -inf -1];for k=1:Nif (real(receiver(k))>=A(1,1))&&(real(receiver(k))<A(1,2))&&...(imag(receiver(k))>=A(1,3))&&(imag(receiver(k))<A(1,4)) demodata(k*4-3)=0;demodata(k*4-2)=0;demodata(k*4-1)=0;demodata(k*4)=0;elseif (real(receiver(k))>=A(2,1))&&(real(receiver(k))<A(2,2))...&&(imag(receiver(k))>=A(2,3))&&(imag(receiver(k))<A(2,4)) demodata(k*4-3)=1;demodata(k*4-1)=0;demodata(k*4)=0;elseif (real(receiver(k))>=A(3,1))&&(real(receiver(k))<A(3,2))...&&(imag(receiver(k))>=A(3,3))&&(imag(receiver(k))<A(3,4)) demodata(k*4-3)=1;demodata(k*4-2)=0;demodata(k*4-1)=1;demodata(k*4)=0;elseif (real(receiver(k))>=A(4,1))&&(real(receiver(k))<A(4,2))...&&(imag(receiver(k))>=A(4,3))&&(imag(receiver(k))<A(4,4)) demodata(k*4-3)=0;demodata(k*4-2)=0;demodata(k*4-1)=1;demodata(k*4)=0;elseif (real(receiver(k))>=A(5,1))&&(real(receiver(k))<A(5,2))...&&(imag(receiver(k))>=A(5,3))&&(imag(receiver(k))<A(5,4)) demodata(k*4-3)=0;demodata(k*4-2)=1;demodata(k*4-1)=0;demodata(k*4)=0;elseif (real(receiver(k))>=A(6,1))&&(real(receiver(k))<A(6,2))...&&(imag(receiver(k))>=A(6,3))&&(imag(receiver(k))<A(6,4)) demodata(k*4-3)=0;demodata(k*4-2)=0;demodata(k*4-1)=0;demodata(k*4)=1;elseif (real(receiver(k))>=A(7,1))&&(real(receiver(k))<A(7,2))...&&(imag(receiver(k))>=A(7,3))&&(imag(receiver(k))<A(7,4)) demodata(k*4-3)=1;demodata(k*4-2)=0;demodata(k*4-1)=0;demodata(k*4)=1;elseif (real(receiver(k))>=A(8,1))&&(real(receiver(k))<A(8,2))...&&(imag(receiver(k))>=A(8,3))&&(imag(receiver(k))<A(8,4)) demodata(k*4-3)=1;demodata(k*4-2)=1;demodata(k*4-1)=0;demodata(k*4)=0;elseif (real(receiver(k))>=A(9,1))&&(real(receiver(k))<A(9,2))...&&(imag(receiver(k))>=A(9,3))&&(imag(receiver(k))<A(9,4)) demodata(k*4-3)=1;demodata(k*4-2)=1;demodata(k*4)=0;elseif (real(receiver(k))>=A(10,1))&&(real(receiver(k))<A(10,2))...&&(imag(receiver(k))>=A(10,3))&&(imag(receiver(k))<A(10,4)) demodata(k*4-3)=1;demodata(k*4-2)=0;demodata(k*4-1)=1;demodata(k*4)=1;elseif (real(receiver(k))>=A(11,1))&&(real(receiver(k))<A(11,2))...&&(imag(receiver(k))>=A(11,3))&&(imag(receiver(k))<A(11,4)) demodata(k*4-3)=0;demodata(k*4-2)=0;demodata(k*4-1)=1;demodata(k*4)=1;elseif (real(receiver(k))>=A(12,1))&&(real(receiver(k))<A(12,2))...&&(imag(receiver(k))>=A(12,3))&&(imag(receiver(k))<A(12,4)) demodata(k*4-3)=0;demodata(k*4-2)=1;demodata(k*4-1)=1;demodata(k*4)=0;elseif (real(receiver(k))>=A(13,1))&&(real(receiver(k))<A(13,2))...&&(imag(receiver(k))>=A(13,3))&&(imag(receiver(k))<A(13,4)) demodata(k*4-3)=0;demodata(k*4-2)=1;demodata(k*4-1)=0;demodata(k*4)=1;elseif (real(receiver(k))>=A(14,1))&&(real(receiver(k))<A(14,2))...&&(imag(receiver(k))>=A(14,3))&&(imag(receiver(k))<A(14,4)) demodata(k*4-3)=1;demodata(k*4-2)=1;demodata(k*4-1)=0;demodata(k*4)=1;elseif (real(receiver(k))>=A(15,1))&&(real(receiver(k))<A(15,2))...&&(imag(receiver(k))>=A(15,3))&&(imag(receiver(k))<A(15,4)) demodata(k*4-3)=1;demodata(k*4-2)=1;demodata(k*4-1)=1;demodata(k*4)=1;elseif (real(receiver(k))>=A(16,1))&&(real(receiver(k))<A(16,2))...&&(imag(receiver(k))>=A(16,3))&&(imag(receiver(k))<A(16,4)) demodata(k*4-3)=0;demodata(k*4-2)=1;demodata(k*4-1)=1;demodata(k*4)=1;end endend。
Matlab环境下16-QAM仿真1.原理框图2.matlab程序:clear all;nsymbol=100000;%每种信噪比下的发送符号数M=16;%16-QAMgraycode=[0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10];%格雷码编码规则EsN0=5:20;%信噪比的范围snr1=10.^(EsN0/10);%将dB值转化成线性值msg=randint(1,nsymbol,M);%由0-15的整数值组成的均匀随机数msg1=graycode(msg+1);%将随机数映射成格雷码msgmod=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);%16-QAM的解调decmsg=graycode(y+1);%格雷码的逆映射[err,ber(indx)]=biterr(msg,decmsg,log2(M));%求误比特率[err,ser(indx)]=symerr(msg,decmsg);%求误符号率Endp4=2*(1-1/sqrt(M)*qfunc(sqrt(3*snr1/(M-1))));ser1=1-(1-p4).^2;%理论误符号率ber1=1/log2(M)*ser1;%理论误比特率semilogy(EsN0,ber,'o',EsN0,ser,'*',EsN0,ser1,EsN0,ber1,'-k.');title('16-QAM载波调制信号在AWGN信道下的性能');xlabel('Es/N0');ylabel('误比特率和误符号率');legend('误比特率','误符号率','理论误符号率','理论误比特率');scatterplot(msgmod);%画出调制之后的星座图title('16-QAM调制之后的星座图');xlabel('同相分量');ylabel('正交分量');scatterplot(rx);%画出混入高斯加性白噪声后的星座图title('16-QAM信号经过AWGN信道之后的星座图');xlabel('同相分量');ylabel('正交分量');程序说明:先将均匀随机数映射成格雷码,再用qammod函数实现16-QAM调制,已调信号由分别表示幅度和相位的两部分数据构成。
创作编号:BG7531400019813488897SX创作者:别如克*姓名:NikeyMATLAB环境下16QAM调制及解调仿真程序说明一、正交调制及相干解调原理框图正交调制原理框图相干解调原理框图二、MQAM调制介绍及本仿真程序的几点说明MQAM可以用正交调制的方法产生,本仿真中取M=16,即幅度和相位相结合的16个信号点的调制。
为了观察信道噪声对该调制方式的影响,我们在已调信号中又加入了不同强度的高斯白噪声,并统计其译码误码率。
为了简化程序和得到可靠的误码率,我们在解调时并未从已调信号中恢复载波,而是直接产生与调制时一模一样的载波来进行信号解调。
三、仿真结果图附源程序代码:main_plot.mclear;clc;echo off;close all;N=10000; %设定码元数量fb=1; %基带信号频率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);%便于观察,这里显示的已调信号及其频谱均为无噪声干扰的理想情况%由于测试信号码元数量为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(y<1e-04); y(q)=1e-04; y=20*log10(y);f1=m/n; f=0:f1:(length(y)-1)*f1;subplot(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:Nif (y_output(i)~=info(i)),创作编号:BG7531400019813488897SX创作者:别如克*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;for i=1:N,temp=rand;if (temp<0.5),info(i)=0; % 1/2的概率输出为0elseinfo(i)=1; % 1/2的概率输出为1endend;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 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); %调制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=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 nargin<6; delay=8; end;if nargin<5; alfa=0.5; end;if nargin<4; N=16; end;b=firrcos(N,fb,2*alfa*fb,fs);y=filter(b,1,x);two2four.m创作编号:BG7531400019813488897SX创作者:别如克*%二进制转换成四进制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=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(I0)=zeros(size(I0));I1=find(yn>=0.5 & yn<1.5); y n(I1)=ones(size(I1));I2=find(yn>=1.5 & yn<2.5); y n(I2)=ones(size(I2))*2;I3=find(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%画出星座图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 nargout<1;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;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;创作编号:BG7531400019813488897SX创作者:别如克*。
姓名:NikeyMATLAB环境下16QAM调制及解调仿真程序说明一、正交调制及相干解调原理框图正交调制原理框图相干解调原理框图二、MQAM调制介绍及本仿真程序的几点说明MQAM可以用正交调制的方法产生,本仿真中取M=16,即幅度和相位相结合的16个信号点的调制。
为了观察信道噪声对该调制方式的影响,我们在已调信号中又加入了不同强度的高斯白噪声,并统计其译码误码率。
为了简化程序和得到可靠的误码率,我们在解调时并未从已调信号中恢复载波,而是直接产生与调制时一模一样的载波来进行信号解调。
三、仿真结果图附源程序代码:clear;clc;echo off;close all;N=10000; %设定码元数量fb=1; %基带信号频率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);%便于观察,这里显示的已调信号及其频谱均为无噪声干扰的理想情况%由于测试信号码元数量为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(y<1e-04); y(q)=1e-04; y=20*log10(y);f1=m/n; f=0:f1:(length(y)-1)*f1;subplot(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:Nif (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调制在不同信道噪声强度下的误码率');%产生二进制信源随机序列function [info]=random_binary(N)if nargin == 0, %如果没有输入参数,则指定信息序列为10000个码元 N=10000;end;for i=1:N,temp=rand;if (temp<,info(i)=0; % 1/2的概率输出为0elseinfo(i)=1; % 1/2的概率输出为1endend;function [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); %调制%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分量并/串转换,最终恢复成码元序列xnnn=length(xn); xn=[xn(1:nn/2);xn(nn/2+1:nn)];xn=xn(:); xn=xn';%基带升余弦成形滤波器function y=bshape(x,fs,fb,N,alfa,delay);%设置默认参数if nargin<6; delay=8; end;if nargin<5; alfa=; end;if nargin<4; N=16; end;b=firrcos(N,fb,2*alfa*fb,fs);y=filter(b,1,x);%二进制转换成四进制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=; y=yn;for i=1:m-1;y=[y;yn];end;y=y(:)'; %映射电平分别为;;;%四进制转换成二进制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< ; yn(I0)=zeros(size(I0)); I1=find(yn>= & yn<; yn(I1)=ones(size(I1)); I2=find(yn>= & yn<; yn(I2)=ones(size(I2))*2; I3=find(yn>=; 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';%画出星座图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 nargout<1;cmax=max(abs(c));ph=(0:5:360)*pi/180;plot*cos(ph),*sin(ph),'c');hold on;for i=1:length(c);ph=ph0-angle(c(i));a=abs(c(i))/cmax*;plot(a*cos(ph),a*sin(ph),'r*');end;plot([ ],[0 0],'k:',[0 0],[ ],'k:');hold off; axis equal; axis([ ]);end;。
QPSK和16QAM调制下MIMO-OFDM系统Matlab仿真实现QPSK和16QAM调制是一种常见的调制方式,而MIMO-OFDM系统是一种利用多输入多输出技术和正交频分复用技术的无线通信系统。
本文将介绍如何使用Matlab对MIMO-OFDM系统进行仿真实现,并分别使用QPSK和16QAM调制方式进行实验。
我们将讨论MIMO-OFDM系统的基本原理和结构,然后介绍Matlab的仿真实现方法,最后进行仿真实验并分析实验结果。
1. MIMO-OFDM系统的基本原理和结构MIMO-OFDM系统是一种结合了多输入多输出(MIMO)技术和正交频分复用(OFDM)技术的无线通信系统。
MIMO技术利用多个天线进行信号传输和接收,可以显著提高系统的传输速率和抗干扰性能。
而OFDM技术将高速数据流分割成多个低速子流,并利用正交频分复用技术进行传输,可以有效克服多径传输引起的频率选择性衰落和提高频谱利用率。
MIMO-OFDM系统的结构包括多个发射天线和多个接收天线,发射端和接收端分别进行信号处理和数据传输。
在发射端,将输入数据流进行调制、符号映射,并进行空间信号处理和频谱分配;在接收端,对接收的信号进行解调、解映射、信道均衡和解调制处理。
整个系统利用MIMO技术和OFDM技术的优势,可以实现高速和高质量的无线通信传输。
2. Matlab的仿真实现方法在Matlab中,可以利用通信工具箱和信号处理工具箱进行MIMO-OFDM系统的仿真实现。
需要定义系统的参数,包括天线数、子载波数、信道模型、调制方式等;然后生成输入数据流,并进行调制和符号映射;接着进行信道编码和传输;最后进行解码和译码,并进行结果分析。
对于QPSK调制方式,可以使用comm.QPSKModulator和comm.QPSKDemodulator进行调制和解调,并使用comm.ErrorRate进行误码率计算;对于16QAM调制方式,可以使用comm.RectangularQAMModulator和comm.RectangularQAMDemodulator进行调制和解调,并进行相应的误码率计算。
淮海工学院课程设计报告书课程名称:通信系统的运算机仿真设计题目: 16QAM通信系统性能分析与MATLAB仿真系(院):电子工程学院学期: 2021-2021-2专业班级:姓名:学号:基于Matlab的16QAM通信系统的设计与仿真1绪论研究意义应用MATLAB的编程方式和功能模块能够搭建各类仿真系统,还能够应用丰硕的时刻域、频率域、相位域的仿真测量仪器。
许多新一代通信系统的系统级仿真程序出此刻MATLAB软件的演示实例中,这使得学习的效率大为提高,对技术与系统的明白得已经从概念深切到电路方案和选取层面。
Simulink是Mathworks公司推出的基于Matlab平台的闻名仿真环境。
Simulink作为一种专业和功能壮大且操作简单的仿真工具,目前已被越来越多的工程技术人员所青睐,它搭建积木式的建仿照真方式既简单又直观,而且已经在各个领域取得了普遍的应用。
QAM(Quadrature Amplitude Modulation):正交调制。
正交振幅,这是最近几年来被上专家十分重视的一种信号调制方式。
QAM是数字信号的一种调制方式,在调制进程中,同时以的幅度和相位来代表不同的数字比特,把多进制与正交载波技术结合起来,进一步提高频带。
正交调幅是一种将两种调幅信号汇合到一个的方式,因此会双倍扩展有效。
正交调幅被用于脉冲调幅,专门是在无线网络应用。
1.2 课程设计的目的和任务随着现代通信技术的进展,专门是移动通信技术高速进展,频带利用率问题愈来愈被人们关注。
在频谱资源超级有限的今天,传统通信系统的容量已经不能知足当前用户的要求。
正交幅度调制QAM(Quadrature Amplitude Modulation)以其高频谱利用率、高功率谱密度等优势,成为宽带无线接入和无线视频通信的重要技术方案。
第一介绍了QAM调制解调原理,提出了一种基于MATLAB 的16QAM系统调制解调方案,包括串并转换,2-4电平转换,抽样裁决,4-2电平转换和并串转换子系统的设计,对16QAM的星座图和调制解调进行了仿真,并对系统性能进行了分析,进而证明16QAM调制技术的优越性。
Matlab环境下16-QAM仿真
1.原理框图
2.matlab程序:
clear all;
nsymbol=100000;%每种信噪比下的发送符号数
M=16;%16-QAM
graycode=[0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10];%格雷码编码规则
EsN0=5:20;%信噪比的范围
snr1=10.^(EsN0/10);%将dB值转化成线性值
msg=randint(1,nsymbol,M);%由0-15的整数值组成的均匀随机数
msg1=graycode(msg+1);%将随机数映射成格雷码
msgmod=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);%16-QAM的解调
decmsg=graycode(y+1);%格雷码的逆映射
[err,ber(indx)]=biterr(msg,decmsg,log2(M));%求误比特率
[err,ser(indx)]=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,'o',EsN0,ser,'*',EsN0,ser1,EsN0,ber1,'-k.');
title('16-QAM载波调制信号在AWGN信道下的性能');
xlabel('Es/N0');ylabel('误比特率和误符号率');
legend('误比特率','误符号率','理论误符号率','理论误比特率');
scatterplot(msgmod);%画出调制之后的星座图
title('16-QAM调制之后的星座图');
xlabel('同相分量');ylabel('正交分量');
scatterplot(rx);%画出混入高斯加性白噪声后的星座图
title('16-QAM信号经过AWGN信道之后的星座图');
xlabel('同相分量');ylabel('正交分量');
程序说明:
先将均匀随机数映射成格雷码,再用qammod函数实现16-QAM调制,已调信号由分别表示幅度和相位的两部分数据构成。
计算出每个符号的平均功率之后,再根据信噪比算出噪声的平均功率。
将噪声叠加到已调信号上,对幅度和相位两部分都叠加上噪声。
其后通过qamdemod函数解调,得到由格雷码表示的数据,再通过格雷码的逆映射还原出0-15组成的均匀随机数,再与没有调制的数据比较,得出误比特率和误符号率。
并画出调制之后的信号和叠加了噪声之后的已调信号的星座图。
3.仿真结果:。