clc;

clear all;

%假定接收端已经实现载波同步,位同步(盲信号解调重点要解决的问题:载波同步(costas环(未见到相关代码)),位同步(Gardner算法(未见相关代码)),帧同步)

% carrier frequency  for modulation and demodulation

fc=5e6;

%QPSK transmitter

data=5000  ;   %码数率为5MHZ     %原码个数

rand_data=randn(1,5000);

for  i=1:data

if rand_data(i)>=0.5

rand_data(i)=1;

else

rand_data(i)=0;

end

end

%seriel to parallel        %同时单极性码转为双极性码

for  i=1:data

if rem(i,2)==1

if  rand_data(i)==1

I(i)=1;

I(i+1)=1;

else

I(i)=-1;

I(i+1)=-1;

end

else

if rand_data(i)==1

Q(i-1)=1;

Q(i)=1;

else

Q(i-1)=-1;

Q(i)=-1;

end

end

end

% zero insertion   ,此过程称为成形。成形的意思就是实现由消息到波形的转换,以便发射,脉冲成形应该是在基带调制之后。

zero=5;         %sampling  rate  25M HZ  ,明白了,zero为过采样率。它等于 采样率fs/码速率。

for  i=1:zero*data     % 采样点数目=过采样率*原码数目

if rem(i,zero)==1

Izero(i)=I(fix((i-1)/zero)+1);

Qzero(i)=Q(fix((i-1)/zero)+1);

else

Izero(i)=0;

Qzero(i)=0;

end

end

%pulse shape filter, 接着,将进行低通滤波,因为 随着传输速率的增大,基带脉冲的频谱将变宽

%如果不滤波(如升余弦滤波)进行低通滤波,后面加载频的时候可能会出现困难。

%平方根升余弦滤波器

% psf=rcosfir(rf,n_t,rate,fs,'sqrt')   rate:过采样率,rf:滚降因子,n_t:滤波器阶数,fs:采样率

%用在调制或发送之前,用在解调或接受之后,用来降低过采样符号流带宽并不引发ISI(码间串扰)

NT=50;

N=2*zero*NT;    % =500

fs=25e6;

rf=0.1;

psf=rcosfir(rf,NT,zero,fs,'sqrt');% psf大小为500

Ipulse=conv(Izero,psf);

Qpulse=conv(Qzero,psf);

%为什么数字信号传输也要过采样,成形滤波?

%答:过采样的数字信号处理起来对低通滤波器的要求相对较低,如果不过采样,滤波的时候滤波器需要很陡峭,指标会很严格

%成形滤波的作用是保证采样点不失真。如果没有它,那信号在经过带限信道后,眼图张不开,ISI非常严重。成形滤波的位置在基带调制之后。

%因为经成形滤波后,信号的信息已经有所损失,这也是为避免ISI付出的代价。换句话说,成形滤波的位置在载波调制之前,仅挨着载波调制。

%即:(发送端)插值(采样)-成形-滤波(LPF)-加载频(载波调制)-加噪声至(接收端)乘本振-低通-定时抽取-判决。

%modulation

for i=1:zero*data+N   %采样点数目改变 (因为卷积的缘故)

t(i)=(i-1)/(fs);  %这里因为假设载频与码速率大小相等,所以用载频fc乘以过采样率=采样率。

Imod(i)=Ipulse(i)*sqrt(2)*cos(2*pi*fc*t(i));

Qmod(i)=Qpulse(i)*(-sqrt(2)*sin(2*pi*fc*t(i)));

end

sum=Imod+Qmod;

%QPSK  receiver

%demodulation

for i=1:zero*data+N

Idem(i)=sum(i)*sqrt(2)*cos(2*pi*fc*t(i));

Qdem(i)=sum(i)*(-sqrt(2)*sin(2*pi*fc*t(i)));

end

%matched  filter

mtf=rcosfir(rf,NT,zero,fs,'sqrt');

Imat=conv(Idem,mtf);

Qmat=conv(Qdem,mtf);

%data selection

for  i=1:zero*data

Isel(i)=Imat(i+N);

Qsel(i)=Qmat(i+N);

end

%sampler        %提取码元

for i=1:data

Isam(i)=Isel((i-1)*zero+1);

Qsam(i)=Qsel((i-1)*zero+1);

end

%decision  threshold

threshold=0.2;

for  i=1:data

if Isam(i)>=threshold

Ifinal(i)=1;

else

Ifinal(i)=-1;

end

if Qsam(i)>=threshold

Qfinal(i)=1;

else

Qfinal(i)=-1;

end

end

%parallel to serial

for i=1:data

if rem (i,2)==1

if Ifinal(i)==1

final(i)=1;

else

final(i)=0;

end

else

if  Qfinal(i)==1

final(i)=1;

else

final(i)=0;

end

end

end

% 绘图

figure(1)

plot(20*log(abs(fft(rand_data))));

axis([0  data  -40  100]);

grid on;

title('spectrum  of input binary data');

figure(2)

subplot(221);

plot(20*log(abs(fft(I))));

axis([0 data -40 140]);

grid  on;

title('spectrum of I-channel data');

subplot(222);

plot(20*log(abs(fft(Q))));

axis([0  data   -40  140]);

grid  on;

title('spectrum of Q-channel data');

subplot(223);

plot(20*log(abs(fft(Izero))));

axis([0 zero*data  -20  140]);

grid  on;

title('spectrum of I-channel after zero insertion');

subplot(224);

plot(20*log(abs(fft(Qzero))));

axis([0  zero*data   -20 140]);

grid  on;

title('spectrum of Q-channel after zero insertion');

figure(3);

subplot(221);

plot(psf);

axis([200    300     -0.2    0.6]);

title('time domain response of pulse shaping filter');

grid  on;

subplot(222);

plot(20*log(abs(fft(psf))));

axis([0  N   -350 50]);

grid on;

title('transfer  function  of pulse  shaping filter');

subplot(223);

plot(20*log(abs(fft(Ipulse))));

axis([0  zero*data+N  -250 150]);

grid on;

title('spectrum of I-channel after  impulse shaping filter');

subplot(224);

plot(20*log(abs(fft(Qpulse))));

axis([0  zero*data+N -250  150]);

grid  on;

title('spectrum of Q-channel  after pluse shaping  filter');

figure(4)

subplot(211);

plot(20*log(abs(fft(Imod))));

axis([0  zero*data+N  -250 150]);

grid  on ;

title('spectrum of I-channel  after modulation');

subplot(212);

plot(20*log(abs(fft(Qmod))));

axis([0  zero*data+N  -250 150]);

grid  on;

title('spectrum  of  Q-channel after modulation');

figure(5)

subplot(221);

plot(20*log(abs(fft(Idem))));

axis([0 zero*data  -200  150]);

grid on;

title('spectrum  of I-channel after  demodulation');

subplot(222);

plot(20*log(abs(fft(Qdem))));

axis([0  zero*data+N  -200  150 ]);

grid  on;

title('spectrum of Q-channel after demodulation');

subplot(223);

plot(20*log(abs(fft(Imat))));

axis([0  zero*data  -400  200]);

grid  on;

title('spectrum  of I-channel  after  matched filter');

subplot(224);

plot(20*log(abs(fft(Qmat))));

axis([0  zero*data  -400  200]);

grid  on;

title('spectrum of  Q-channel after matched filter');

figure(6)

subplot(221);

plot(20*log(abs(fft(Isam))));

axis([0 data  -40  150]);

grid  on;

title('spectrum of I-channel after sampler');

subplot(222);

plot(20*log(abs(fft(Qsam))));

axis([0  data -40  150 ]);

grid  on;

title('spectrum of Q-channel after  sampler');

subplot(223);

plot(20*log(abs(fft(Ifinal))));

axis([0 data  -40  150]);

grid on;

title('spectrum of  I-channel after  decision threshold');

subplot(224);

plot(20*log(abs(fft(Qfinal))));

axis([0 data  -40  150]);

grid on;

title('spectrum of  Q-channel after  decision threshold');

figure(7)

plot(Isel,Qsel);

axis([-1.6 1.6  -1.6  1.6]);

grid  on;

title('constellation  of  matched  filter  output');

figure(8)

plot(Isam,Qsam,'X');

axis([-1.2  1.2   -1.2  1.2]);

grid on;

title('constellation  of  sampler');

figure(9)

plot(20*log(abs(fft(final))));

axis([0  data  0  100]);

grid  on;

title('aspectrum  of  final  received  binary  data');

matlab qpsk调制程序,QPSK调制解调完整程序(配有自己的注释)相关推荐

  1. bpsk调制及解调实验_无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解...

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 先从IQ调制说起: IQ调制:IQ解调原理:Linux下使用GNU Octave运行下面的代码: ...

  2. 基于MATLAB的BPSK和QPSK调制的性能比较

    摘要:本文基于研究了MATLAB设计了一个数字通信系统,该系统研究比较了同一数据在不同信噪比下通过高斯信道时BPSK和QPSK的误码率,以及通过同一个瑞利信道时,不同信噪比下两种调制方式的误码率,同时 ...

  3. matlab ask fsk调制解调,Matlab的ASK-FSK--PSK程序仿真

    <Matlab的ASK-FSK--PSK程序仿真>由会员分享,可在线阅读,更多相关<Matlab的ASK-FSK--PSK程序仿真(12页珍藏版)>请在人人文库网上搜索. 1. ...

  4. 4fsk调制matlab_数字调制解调技术的MATLAB与FPGA实现

    <数字调制解调技术的MATLAB与FPGA实现>包含2个版本.Xilinx/VHDL版的设计平台为ISE14.7/VHDL,配套开发板为CXD301:Altera/Verilog版的设计平 ...

  5. 【通信原理】实验五 基于Matlab的2ASK和2FSK调制解调

    目录 一.实验目的 二.实验器材 三.实验原理 1.二进制振幅键控(2ASK) 2.二进制频移键控(2FSK) 四.示例演示 1.2ASK的模拟调制程序如下: 2.2ASK的开关键控法,调制程序如下: ...

  6. matlab对信号进行AM调制与解调(仿真)

    matlab对信号进行AM调制与解调(仿真) 用matlab仿真AM模拟调制.解调过程 AM调制与解调过程 子函数程序 T2F 子函数程序 F2T 子函数程序 lpf 结果如下所示 用matlab仿真 ...

  7. IQ调制,BPSK调制,QPSK调制,16QAM调制

    无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解 1. IQ调制解调原理 1.1 IQ调制起: 1.2 解调原理: 1.3 如何应用IQ调制来实现MPSK调制 1.4.1 如何用 ...

  8. 幅度调制信号 matlab,《利用MATLAB实现信号的幅度调制与解调.doc

    <利用MATLAB实现信号的幅度调制与解调 课程设计论文 姓名:姜勇 学院:机电与车辆工程学院 专业:电子信息工程2班 学号:1665090208 安徽科技学院 学年第 学期 < > ...

  9. 《通信原理》课程设计-基于matlab的am信号的调制与解调,AM调制解调与解调器抗干扰性能研究系统...

    <AM调制解调与解调器抗干扰性能研究系统>由会员分享,可在线阅读,更多相关<AM调制解调与解调器抗干扰性能研究系统(10页珍藏版)>请在人人文库网上搜索. 1.哈尔滨商业大学课 ...

  10. matlab实现幅度调制,利用matlab实现信号幅度的调制与解调钟媛

    利用matlab实现信号幅度的调制与解调钟媛 1<MATLAB 语言>课程论文利用 MATLAB 实现信号幅度的调制与解调 姓名: 钟媛学号:12010245219专业:电子信息工程班级: ...

最新文章

  1. npoi导出execl源码,vs2008实现,包括using库
  2. Ubuntu14.04上安装TensorRT 2.1操作步骤
  3. 机器学习实战-回归算法-18
  4. 蛋白结构建模与优化_最终幻想: 无中生有的蛋白质从头设计
  5. 计算机系统应用的书,基于领域本体与上下文感知计算的智能图书-计算机系统应用.PDF...
  6. 使用Spring自定义注解实现任务路由
  7. WP中Document的层次设计
  8. 【LeetCode】题解合集(JavaScript版)
  9. 74系列芯片功能说明
  10. KindEditor实现上传图片与回显
  11. 制图折断线_cad折断线怎么画,你值得一看的技巧
  12. 连接网络打印机报0x00000709解决方案
  13. Python编程基础的应用
  14. 7-4 行为模式解析-摆脱被动和畏缩的行为模式,掌握职场主动权
  15. windows 安装vagrant reload 失败; No Virtualbox Guest Additions installation found.
  16. 尼尔机器人技能快捷键_《尼尔:机械部队》组合按键技能使用攻略
  17. 2022年5月语音合成(TTS)和语音识别(ASR)论文月报
  18. 浅谈微分求导+泰勒展开+生成函数
  19. 网页如何与小程序交互通信
  20. ESP32-C3入门教程——导读

热门文章

  1. 整理最新java面试宝典2019
  2. velocity参数重新赋值_Velocity 语法详解
  3. J2EE6 servlet session超时机制
  4. 高德地图加载白屏问题No implementation found for long com.autonavi.amap.mapcore.MapCore.nativeNew
  5. GD32VF103学习笔记(1)
  6. 汇编语言程序设计(一)
  7. python万年历代码带解释_带闹钟的单片机万年历代码说明(详细注释)
  8. MAPDF.NET 电子书合集
  9. 关于GBK编码及C语言中文输出问题
  10. 使用PHP和JS对小米主题商店下载地址解析