正交幅度调制(QAM)及解调Matlab仿真讲解

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

正交幅度调制(QAM)及解调Matlab仿真实验目的:

1.掌握QAM及解调原理与特性;

2.了解星座图的原理及用途。

实验内容:

1.编写MATLAB程序仿真QAM及相干解调;

2.观察I、Q两路基带信号的特征及与输入NRZ码上网关系;

3.观察I、Q调制过程中信号的变化;

4.观察星座图在不同噪声环境下的变化;

5.分析仿真中观察的数据,撰写实验报告。

仿真代码:

function project(N,p)

%N为待仿真序列的长度

%p为产生1的概率

%======================

%首先产生随机二进制序列

N=input('输入二进制序列的长度:N=');

p=input('输入产生1的概率:');

source=randsrc(1,N,[1,0;p,1-p]);

figure(1);

stem(source);

axis([1 N -1 2]);

%对产生的二进制序列进行QAM调制

[source1,source2]=Qam_modulation(source);

%===============================

%画出星座图

figure(2);

plot_astrology(source1,source2);

%==============================

%两路信号进行插值(8倍过采样)

sig_insert1=insert_value(source1,8);

sig_insert2=insert_value(source2,8);

%================================

%画出两路信号的波形图

figure(3);

plot_2way(sig_insert1,sig_insert2,length(sig_insert1),0.5);

title('两路信号波形');

%================================

%通过低通滤波器

[sig_rcos1,sig_rcos2]=rise_cos(sig_insert1,sig_insert2,0.25,2);

%================================

%画出两路信号信号波形图

figure(4);

plot_2way(sig_rcos2,sig_rcos2,length(sig_rcos1)/4,0.5);

title('通过低通滤波器后两路信号波形图')

hold on

stem_2way(sig_insert1,sig_insert2,3,0.25,2,length(sig_rcos1)/4); %================================

%将基带信号调制到高频上

[t,sig_modulate]=modulate_to_high(sig_rcos1,sig_rcos2,0.25,2.5); figure(5);

plot(t(1:500),sig_modulate(1:500));

title('载波调制信号图');

%================================

%将滤波后的信号加入高斯噪声

snr=10;

[x1,x2]=generate_noise(sig_rcos1,sig_rcos2,snr);

sig_noise1=x1';

sig_noise2=x2';

figure(6);

plot_2way(sig_noise1,sig_noise2,length(sig_noise1)/4,0.5);

title('加入高斯白噪声后的两路信号波形');

%================================

%经过匹配滤波器

[sig_match1,sig_match2]=rise_cos(sig_noise1,sig_noise2,0.25,2); figure(7);

plot_2way(sig_match1,sig_match2,length(sig_match1)/4,0.5); title('经过匹配滤波器后');

%================================

%采样

[x1,x2]=pick_sig(sig_match1,sig_match2,8);

sig_pick1=x1;

sig_pick2=x2;

%画出星座图

figure(8)

plot_astrology(sig_pick1,sig_pick2);

%================================

%解调

signal=demodulate_sig(sig_pick1,sig_pick2);

r=signal;

%画出解调后的信号

figure(9);

stem(r);

axis([1 N -1 2]);

demodulate_sig

function y=demodulate_sig(x1,x2)

%解调

xx1(find(x1>=2))=3;

xx1(find((x1<2)&(x1>=0)))=1;

xx1(find((x1>=-2)&(x1<0)))=-1;

xx1(find(x1<-2))=-3;

xx2(find(x2>=2))=3;

xx2(find((x2<2)&(x2>=0)))=1;

xx2(find((x2>=-2)&(x2<0)))=-1;

xx2(find(x2<-2))=-3;

temp1=zeros(1,length(xx1)*2);

temp1(find(xx1==-1)*2)=1;

temp1(find(xx1==1)*2-1)=1;

temp1(find(xx1==1)*2)=1;

temp1(find(xx1==3)*2-1)=1;

temp2=zeros(1,length(xx2)*2);

temp2(find(xx2==-1)*2)=1;

temp2(find(xx2==1)*2-1)=1;

temp2(find(xx2==1)*2)=1;

temp2(find(xx2==3)*2-1)=1;

n=length(temp1);

for i=1:2:2*n-1

y(i)=temp1((i+1)/2);

y(i+1)=temp2((i+1)/2);

end

generate_noise

function [y1,y2]=generate_noise(x1,x2,snr)

snr1=snr+10*log10(4);

ss=var(x1+i*x2,1);

y=awgn([x1+j*x2],snr1+10*log10(ss/10),'measured'); y1=real(y);

y2=imag(y);

insert_value

相关文档
最新文档