300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > qam已调信号matlab相干解调 通信原理课程设计-基于MATLAB的M-QAM调制及相干解调的设

qam已调信号matlab相干解调 通信原理课程设计-基于MATLAB的M-QAM调制及相干解调的设

时间:2020-09-16 03:41:01

相关推荐

qam已调信号matlab相干解调 通信原理课程设计-基于MATLAB的M-QAM调制及相干解调的设

通 信 原 理

课 程 设 计 报 告

题 目:基于MATLAB 的M-QAM调

制及相干解调的设计与仿真

班 级:通信工程 1411

姓 名:

成 绩:

日 期: 年 12 月 21 日

基于MATLAB的M-QAM调制及相干解调的设计与仿真

摘要:正交幅度调制技术(QAM)是一种功率和带宽相对高效的信道调制技术,因此在自适应信道调制技术中得到了较多应用。本次课程设计主要运用MATLAB软件对M =16 进制正交幅度调制系统进行了仿真,从理论上验证16进制正交幅度调制系统工作原理,为实际应用和科学合理地设计正交幅度调制系统,提供了便捷、高效、直观的重要方法。实验及仿真的结果证明,多进制正交幅度调制解调易于实现,且性能良好,是未来通信技术的主要研究方向之一,并有广阔的应用前景。

关键词:正交幅度调制系统;MATLAB ;仿真

目 录

1引言2

1.1课程设计的目的2

1.2课程设计的基本任务和要求2

1.3仿真平台Matlab2

2 QAM系统的介绍2

2.1正交幅度调制技术2

2.2QAM调制解调原理2

2.3QAM的误码率性能2

3 多进制正交幅度(M-QAM)调制及相干解调原理框图2

4 基于MATLAB的多进制正交幅度(M-QAM)调制及相干解调设计与仿真2

4.1系统设计2

4.2随机信号的生成2

4.3星座图映射2

4.4波形成形(平方根升余弦滤波器)2

4.5调制2

4.6加入高斯白噪声之后解调2

5 仿真结果及分析2

6 总结与体会2

6.1总结2

6.2心得体会2

【参考文献】2

附录2

1引言

本次课程设计主要运用MATLAB软件进行程序编写。实现模拟基带信号经QAM调制与相干解调的传输过程,通过分析比较调制解调输出波形以及功率谱特征,理解QAM调制解调原理。

1.1课程设计的目的

通信原理课程设计的目的是使我们加深对所学的通信原理知识的理解,扎实掌握通信原理的基础知识和基本理论,增强分析问题和解决问题的能力,培养学生专业素质,提高其利用通信原理知识处理通信系统问题的能力,为今后专业课程的学习、毕业设计和工作打下良好的基础。

1.2课程设计的基本任务和要求

(1)设计出规定的数字通信系统的结构,包括信源,调制,发送滤波器模块,信道,接受滤波器模块以及信宿;

(2)根据通信原理,设计出各个模块的参数(例如码速率,滤波器的截止频率等);

(3)熟悉MATLAB环境下的Simulink仿真平台,用Matlab/Simulink 实现该数字通信系统;

(4)观察仿真并进行波形分析(波形图和频谱图等);

1.3仿真平台Matlab

MATLAB目前已发展成为由MATLAB 语言、MATLAB 工作环境、MATLAB 图形处理系统、MATLAB 数学函数库和MATLAB 应用程序接口五大部分组成的集数值计算、图形处理、程序开发为一体的功能强大的系统。本次课程设计则在深入研究连续时间信号傅里叶级数分析理论知识的基础上,利用MATLAB强大的图形处理功能、符号运算功能以及数值计算功能,通过MATLAB编程进行图形功能仿真,从而实现连续时间周期信号频域分析的仿真波形,包括以下内容:用MATLAB实现周期信号的傅里叶级数分解与综合的波形;用MATLAB实现周期信号的单边频谱及双边频谱的波形与分析;用MATLAB实现典型周期信号的频谱的波形。

2 QAM系统的介绍

2.1 正交幅度调制技术

正交振幅调制(Quadrature Amplitude Modulation,QAM)是一种振幅和相位联合键控。虽然MPSK和MDPSK等相移键控的带宽和功率方面都具有优势,即带宽占用小和比特噪声比要求低。

图1 8PSK信号相位

但是由图1可见,在MPSK体制中,随着M的增大,相邻相位的距离逐渐减小,使噪声容限随之减小,误码率难于保证。为了改善在M大时的噪声容限,发展出了QAM体制。在QAM体制中,信号的振幅和相位作为两个独立的参量同时受到调制。这种信号的一个码元可以表示为:

(1—1)

式中:k=整数;和分别可以取多个离散值。

式(1—1)可以展开为:

(1—2)

令Xk = Akcosqk,Yk = -Aksinqk

则式(1—1)变为:

(1—3)

和也是可以取多个离散的变量。从式(1—3)看出,可以看作是两个正交的振幅键控信号之和。

在式(1—1)中,若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 256QAM信号矢量图

AM

16QAM信号的产生方法主要有两种。第一种是正交调幅法,即用两路独立的正交4ASK信号叠加,形成16QAM信号,如图6所示。

图6 正交调幅法

第二种方法是复合相移法,它移用两路独立的QPSK信号叠加,形成16QAM信号,如图7所示。图中

AM

AM

图7 复合相移法

虚线大圆上的4个大黑点表示一个QPSK信号矢量的位置。在这4个位置上可以叠加上第二个QPSK矢量,后者的位置用虚线小圆上的4个小黑点表示。

2.2 QAM调制解调原理

2.2.1 QAM调制

正交幅度调制QAM是数字通信中一种经常利用的数字调制技术,尤其是多进制QAM具有很高的频带利用率,在通信业务日益增多使得频带利用率成为主要矛盾的情况下,正交幅度调制方式是一种比较好的选择。

正交幅度调制(QAM)信号采用了两个正交载波,每一个载波都被一个独立的信息比特序列所调制。发送信号波形如图8所示

(1-4)

图8 M=16QAM信号星座图

式中{}和{}是电平集合,这些电平是通过将k比特序列映射为信号振幅而获得的。例如一个16位正交幅度调制信号的星座图如下图所示,该星座是通过用M=4PAM信号对每个正交载波进行振幅调制得到的。利用PAM分别调制两个正交载波可得到矩形信号星座。

QAM 可以看成是振幅调制和相位调制的结合。因此发送的QAM信号波形可表示为

(1-5)

如果那么QAM方法就可以达到以符号速率同时发送个二进制数据。图9给出了QAM调制器的框图。

图9 QAM调制器框图

2.2.2 QAM的解调和判决

假设在信号传输中存在载波相位偏移和加性高斯噪声。因此r(t)可以表示为

(1-6)

其中是载波相位偏移,且

(1-7)

将接收信号与下述两个相移函数进行相关运算

(1-8)

(1-9)

如图10所示,相关器的输出抽样后输入判决器。使用图10中所示的锁相环估算接收信号的载波相位偏移,相移和对该相位偏移进行补偿。

图10 QAM信号的解调和判决

假设图中所示的时钟与接收信号同步,以使相关器的输出在适当的时刻及时被抽样。在这些条件下两个相关器的输出分别为

(1-10)

(1-11)

其中

(1-12)

(1-13)

噪声分量是均值为0,方差为的互不相关的高斯随机变量。

最佳判决器计算距离量度

(1-14)

2.3 QAM的误码率性能

矩形QAM信号星座最突出的优点就是容易产生PAM信号可直接加到两个正交载波相位上,此外它们还便于解调。

对于下的矩形信号星座图(K为偶数),QAM信号星座图与正交载波上的两个PAM信号是等价的,这两个信号中的每一个上都有个信号点。因为相位正交分量上的信号能被相干判决极好的分离,所以易于通过PAM的误码率确定QAM的误码率。

M进制QAM系统正确判决的概率是:

。 (1-15)

式中是进制PAM系统的误码率,该PAM系统具有等价QAM系统的每一个正交信号中的一半平均功率。通过适当调整M进制PAM系统的误码率,可得:

(1-16)

式中是每个符号的平均信噪比。因此,因此M进制QAM的误码率为:

(1-17)

可以注意到,当K为偶数时,这个结果对情形时精确的,而当K为奇数时,就找不到等价的进制PAM系统。如果使用最佳距离量度进行判决的最佳判决器,可以求出任意K>=1误码率的的严格上限。

<=(1-18)

其中,是每比特的平均信噪比。

3 多进制正交幅度(M-QAM)调制及相干解调原理框图

图11 正交调制原理框图

如图11所示的 M-QAM调制原理框图,首先将基带信号进行串并转换分离出I分量、Q分量,然后再分别进行电平映射,经过成形滤波后与载波相乘,最后相加得到已调信号。

图12 相干解调原理框图

如图12所示的M-QAM相干解调原理框图首先对收到的已调信号进行正交相干解调,一路与 cos ω c t 相乘,一路与 sin ω c t 相乘。然后经过低通滤波器,低通滤波器 LPF 滤除乘法器法产生的高频分量,获得有用信号,低通滤波器LPF 输出经抽样判决可恢复出电平信号。

4 基于MATLAB的多进制正交幅度(M-QAM)调制及相干解调设计与仿真

4.1系统设计

首先进行系统的分析的设计,整个设计分为如下几个部分:随机序列的产生、序列的串/并和并/串转换、16QAM调制、星座图的绘制、16QAM解调、加入噪声、误码率的测量及仿真图形显示。

4.2随机信号的生成

利用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 (temp<0.5),

info(i)=0; % 1/2的概率输出为0

else

info(i)=1; % 1/2的概率输出为1

end

end;

4.3 星座图映射

对产生的二进制随机序列进行串并转换,分离出I分量、Q分量,然后再分别进行电平映射。由于是调用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); %调制

二进制转换成四进制代码:

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);

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;

4.4波形成形(平方根升余弦滤波器)

为了避免相邻传输信号之间的串扰,多元符号需要有合适的信号波形。方波是在本地数字信号处理时常见的波形,但在实际传输时这种方波并不合适。根据奈奎斯特第一准则,在实际通信系统中一般均使接收波形为升余弦滚降信号。这一过程由发送端的基带成形滤波器和接收端的匹配滤波器两个环节共同实现,因此每个环节均为平方根升余弦滚降滤波,两个环节合成就实现了一个升余弦滚降滤波。实现平方根升余弦滚降信号的过程称为“波形成形”,通过采用合适的滤波器对多元码流进行滤波实现,由于生成的是基带信号,因此这一过程又称“基带成形滤波”。

代码如下:

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);

4.5调制

已调号进行串并转换分离出I分量、Q分量,然后再分别进行电平映射,经过成形滤波后与载波相乘,最后相加得到已调信号。

调制代码:

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); %调制

4.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,然后进行解调。

解调的代码如下:

%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;

四进制转换成二进制代码如下:

%四进制转换成二进制

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;

误码率代码如下:

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(16QAM调制在信道噪声强度下的误码率);

16-QAM载波调制信号在AWGN信道下的性能代码如下:

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];

%Gray编码规则

EsN0=5:20;

%信噪比,Es/N0

snr1=10.^(EsN0/10);

%信噪比转换为线性值

msg=randint(1,nsymbol,M); %消息数据

msg1=graycode(msg+1); %Gray映射

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);

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,-ko,EsN0,ser,-k*,EsN0,ser1,EsN0,ber1,-k.);

title(16-QAM载波调制信号在AWGN信道下的性能)

xlabel(Es/N0);

ylabel(误比特率和误符号率)

legend(误比特率,误符号率,理论误符号率,理论误比特率)

5 仿真结果及分析

图13 已调信号波形

如图13所示的已调信号,程序码元数量设定为10000个,此处显示1/10,即1000个,基带信号频率1HZ,抽样频率32HZ,载波频率4HZ。

图14 已调信号频谱

图15 16QAM星座图

通过观察图15的16QAM星座图可以看出16QAM的频带利用率比较高,带宽占用比较小。

图16 16QAM调制在不同信道噪声强度下的误码率

图17 16-QAM载波调制信号在AWGN信道下的性能

由图16图17可看到当信噪比小的情况下,仿真曲线和理论曲线差距略大,而随着信噪比的增大,仿真曲线越来越逼进理论曲线。在同样信噪比时,误符号率比误比特率(误码率)要大。简单分析不难看出,由于理论误码率曲线是建立在误符号率除以4的基础上的,而这一条件的前提是出现误符号的时候,一个符号中只有一个bit位发生了错误,这表明误码率比较低,也就是说明信噪比比较大。所以,当信噪比比较小的时候,理论计算的误码率的值要小于仿真得到的值。

6 总结与体会

6.1总结

在现代通信中,提高频谱利用率一直是人们关注的焦点之一。近年来,随着通信业务需求的增长,寻找频谱利用率高的数字调制方式已成为数字通信系统设计,研究的主要目标之一。正交振幅调制QAM( Quadrature Amplitude Modulation )就是一种频谱利用率很高的调制方式,其在中、大容量数字微波通信系统、有线电视网络高速数据传输、卫星通信系统等领域得到了广泛应用。本设计是基于MATLAB/Simulink的16QAM调制与解调系统进行设计与仿真,得到的结论是:

(1)对16QAM调制解调系统基本原理进行了较为深入的了解与分析,并且根据原理图构建MATLAB/Simulink的仿真模型。

(2)较为熟悉的掌握MATLAB/Simulink软件在通信系统中的设计与仿真的步骤与方法。

(3)通过观察星座图可以看出16QAM的频带利用率比较高,带宽占用比较小。

作为一种现代调制技术,QAM相比较传统调制技术,有着很多优于传统调制技术的特性,使得它在中、大容量数字微波通信系统、有线电视网络高速数据传输、卫星通信系统和蜂窝系统等系统中得到大规模应用,大大提高系统通信质量和通信效率。

MATLAB在通信仿真中有着重要的应用,MATLAB/Simulink是通信系统计算机仿真的强大工具,本文提供了一个实际仿真的例子。实际的信道是很复杂的,在实际的应用中应根据不同的要求选用不同的调制方式。本文利用MATLAB/Simulink 对M =16 进制正交幅度调制系统进行了仿真,从理论上验证16进制正交幅度调制系统工作原理,为实际应用和科学合理地设计正交幅度调制系统,提供了便捷、高效、直观的重要方法。

6.2心得体会

这次课程设计通过运用MATLAB/Simulink 软件进行设计仿真,掌握了运用技巧;理解了M-QAM调制的原理以及其优越性。课程设计是培养学生综合运用所学知识,发现、提出、分析和解决问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过课程设计系统的了解了一些理论知识,能把理论知识与具体实践相结合,培养了我们动手、动脑能力。

课程设计主要是对理论知识的延伸,它的目的主要是要在设计中发现问题,并且自己要能找到解决问题的方案,形成一种独立的意识,还能从设计中检验平时所学的理论知识到底有多少,巩固已经学会的内容,不断学习新知识,把这门课学的扎实。

【参考文献】

[1]邵玉斌. Matlab/Simulink通信系统建模与仿真实例分析. 北京:清华大学出版社,

[2]张化光, 刘鑫蕊, 孙秋野. MATLAB/SIMULINK实用教程. 北京:人民邮电出版社,

[3]樊昌信, 曹丽娜. 通信原理. 北京:国防工业出版社,

[4]刘卫国. MATLAB程序设计教程. 北京:中国水利水电出版社,

附录

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;

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(212);

plot(f,y,b);

grid on;

title(已调信号频谱); xlabel(f/fb);

%画出16QAM调制方式对应的星座图

%%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

if (y_output(i)~=info(i)),

numoferr=numoferr+1;

end;

end;

Pe(j)=numoferr/N; %统计误码率

end;

figure;

semilogy(SNR_in_dB,Pe,blue*-);

grid on;

xlabel(SNR in dB);

ylabel(Pe);

title(16QAM调制误码率);

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);

four2two.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;

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

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的概率输出为0

else

info(i)=1; % 1/2的概率输出为1

end

end;

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;

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);

32QAM

M = 32;

k = log2(M);

x = randint(20000,1);

y = modulate(modem.qammod(M,32,InputType,Bit),x);

EbNo = -5:1:10;

for n=1:length(EbNo)

snr(n) = EbNo(n) + 10*log10(k);

ynoisy = awgn(y,snr(n),measured);

zms = demodulate(modem.qamdemod(M,32,OutputType,Bit),ynoisy);

z = de2bi(zms,left-msb);

[nErrors(n), BITBER(n)] = biterr(x,z);

theo_err_prb(n)=(1/k)*3/2*erfc(sqrt(k*0.1*(10.^(EbNo(n)/10))));

end

disp (nErrors);

disp (BITBER);

semilogy(EbNo,BITBER,b*-,EbNo,theo_err_prb,k*-);

title(32QAM误比特率性能);

xlabel(Eb/N0(dB));

ylabel(误比特率);

legend(仿真误码率,理论误码率);

31

展开阅读全文

qam已调信号matlab相干解调 通信原理课程设计-基于MATLAB的M-QAM调制及相干解调的设计与仿真.doc...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。