matlab qpsk调制程序,QPSK调制解调完整程序(配有自己的注释)
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调制解调完整程序(配有自己的注释)相关推荐
- bpsk调制及解调实验_无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解...
欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 先从IQ调制说起: IQ调制:IQ解调原理:Linux下使用GNU Octave运行下面的代码: ...
- 基于MATLAB的BPSK和QPSK调制的性能比较
摘要:本文基于研究了MATLAB设计了一个数字通信系统,该系统研究比较了同一数据在不同信噪比下通过高斯信道时BPSK和QPSK的误码率,以及通过同一个瑞利信道时,不同信噪比下两种调制方式的误码率,同时 ...
- matlab ask fsk调制解调,Matlab的ASK-FSK--PSK程序仿真
<Matlab的ASK-FSK--PSK程序仿真>由会员分享,可在线阅读,更多相关<Matlab的ASK-FSK--PSK程序仿真(12页珍藏版)>请在人人文库网上搜索. 1. ...
- 4fsk调制matlab_数字调制解调技术的MATLAB与FPGA实现
<数字调制解调技术的MATLAB与FPGA实现>包含2个版本.Xilinx/VHDL版的设计平台为ISE14.7/VHDL,配套开发板为CXD301:Altera/Verilog版的设计平 ...
- 【通信原理】实验五 基于Matlab的2ASK和2FSK调制解调
目录 一.实验目的 二.实验器材 三.实验原理 1.二进制振幅键控(2ASK) 2.二进制频移键控(2FSK) 四.示例演示 1.2ASK的模拟调制程序如下: 2.2ASK的开关键控法,调制程序如下: ...
- matlab对信号进行AM调制与解调(仿真)
matlab对信号进行AM调制与解调(仿真) 用matlab仿真AM模拟调制.解调过程 AM调制与解调过程 子函数程序 T2F 子函数程序 F2T 子函数程序 lpf 结果如下所示 用matlab仿真 ...
- IQ调制,BPSK调制,QPSK调制,16QAM调制
无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解 1. IQ调制解调原理 1.1 IQ调制起: 1.2 解调原理: 1.3 如何应用IQ调制来实现MPSK调制 1.4.1 如何用 ...
- 幅度调制信号 matlab,《利用MATLAB实现信号的幅度调制与解调.doc
<利用MATLAB实现信号的幅度调制与解调 课程设计论文 姓名:姜勇 学院:机电与车辆工程学院 专业:电子信息工程2班 学号:1665090208 安徽科技学院 学年第 学期 < > ...
- 《通信原理》课程设计-基于matlab的am信号的调制与解调,AM调制解调与解调器抗干扰性能研究系统...
<AM调制解调与解调器抗干扰性能研究系统>由会员分享,可在线阅读,更多相关<AM调制解调与解调器抗干扰性能研究系统(10页珍藏版)>请在人人文库网上搜索. 1.哈尔滨商业大学课 ...
- matlab实现幅度调制,利用matlab实现信号幅度的调制与解调钟媛
利用matlab实现信号幅度的调制与解调钟媛 1<MATLAB 语言>课程论文利用 MATLAB 实现信号幅度的调制与解调 姓名: 钟媛学号:12010245219专业:电子信息工程班级: ...
最新文章
- String与StringBuffer的区别
- 看完这个你还不理解右值引用和移动构造 你就可以来咬我(下)
- CSDN-Markdown-图片设置(大小,居中)
- 前端如何做极致的首屏渲染速度优化
- 磁盘管理之逻辑卷管理(Logical Volume Manager)
- 在你们看来,信息网络的定级如何才能更好的发展?或者说有什么影响因素使得定级工作不好开展?
- linux进程运行队列,Linux进程调度中队列的使用
- 区块链教程(三):Solidity编程基础
- mysql 版本太高_mysql创建新库以及解决版本过高8.0以上导致navicat无法连接的问题...
- 微信小程序 | 来自小程序开发者的实例教程 ①
- 这款游戏玩法是Low了点,但赚的却是实打实的EOS。
- document.body和document.documentElement的区别
- android+汉王手写引擎,汉王 从手写专家到输入法专家
- 计算机无法识别银行usb是,电脑不能识别USB设备(加密设备、网银U盾等)的解决方法...
- 四旋翼飞行器基本知识(四旋翼飞行器结构和原理+四轴飞行diy全套入门教程)
- ps使用,绘制外观图
- 三分钟教会你微信炸一炸,满屏粑粑也太可爱了!
- 博物馆3d数字化全景展示设计方案
- 2022年Q3过去了,平常心最重要
- 工业控制计算机系统总线,工业控制计算机总线技术.ppt
热门文章
- 如何查看java安装成功_如何查看java是否安装成功
- Grasshopper学习手册第二版资源
- C语言递归方法求解背包问题
- 玩转C语言Socket网络编程
- MySQL随机函数的运用场景示例总结
- 怎么把照片做成计算机主题,windows10主题制作怎么操作_windows10电脑主题如何自己制作...
- 无线呼叫服务器对码设置,无线鼠标对码模式怎么设置
- java防止sql注入的几个途径_Java防止SQL注入的几个途径
- Win10任务栏卡死情况解决方案
- java第一个helloworld_Java第一个程序--HelloWorld