一、获取代码方式

获取代码方式1:
完整代码已上传我的资源: 【数字信号调制】基于matlab GUI QPSK调制+解调【含Matlab源码 646期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、QPSK简介

1 调制模型
与QPSK相比,OQPSk调制方式在复数通道Q通道中,插入了一个比特的时延Tb。

2.优点
OQPSK能够把180度的相移变化变成两个π /2的相位变化,因此相轨道远离了原点

3 解调
因为调制时Q路进行了延时,所以解调时I路进行延时

三、部分源代码

function varargout = GUI_QPSK(varargin)
% GUI_QPSK MATLAB code for GUI_QPSK.fig
%      GUI_QPSK, by itself, creates a new GUI_QPSK or raises the existing
%      singleton*.
%
%      H = GUI_QPSK returns the handle to a new GUI_QPSK or the handle to
%      the existing singleton*.
%
%      GUI_QPSK('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in GUI_QPSK.M with the given input arguments.
%
%      GUI_QPSK('Property','Value',...) creates a new GUI_QPSK or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before GUI_QPSK_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to GUI_QPSK_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help GUI_QPSK% Last Modified by GUIDE v2.5 03-Dec-2018 20:37:56% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @GUI_QPSK_OpeningFcn, ...'gui_OutputFcn',  @GUI_QPSK_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before GUI_QPSK is made visible.
function GUI_QPSK_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to GUI_QPSK (see VARARGIN)% Choose default command line output for GUI_QPSK
handles.output = hObject;
s=round(rand(1,100));  %生成二进制基带数据并画出基带信号图
N=1:100;
%figure(1);subplot(311);stem(N,s);title('基带信号');grid on;Ps=1;
M=4;        %QPSK星座图
d=sqrt(Ps)*sin(pi/M);
A=[1+1*i,-1+1*i,-1-1*i,1-1*i]*d;
%subplot(312);scatter(real(A),imag(A),'filled');title('QPSK星座图');hold on;
theta=0:pi/100:2*pi;
x=cos(theta);
y=sin(theta);
%plot(x,y);grid on;  Maptable=[0 0;0 1;1 1;1 0];        %QPSK格雷码比特映射
for j=1:2:100for m=1:Mif isequal(s(j:j+1),Maptable(m,:)) Qu((j+1)/2)= (2*m-1)*pi/4;x((j+1)/2)=A(m);breakendend
end               %基带数据s携带的信息映射到X[n] Am=1;             %载波调制
T=0.0001;            fc=6/T;
Smpl=1000;
deltaT=T/Smpl;    %连续时间离散化间隔
Ns=5;            %画出Ns个符号的波形
t=deltaT:deltaT:Ns*T;  %离散时间序列for j=1:Nsindex=(j-1)*Smpl+1:j*Smpl; %第i个符号对应的离散时间序号g(index)=1;              %矩形脉冲成型X(index)=Am*g(index).*cos(2*pi*fc*t(index)+Qu(ceil(index/100.01))); %载波调制信号
end%subplot(313);plot(t,X);title('QPSK调制信号波形');SNR_dB=15;    %定义信噪比
SNR=10^(SNR_dB/10); %定义线性信噪比
Ps=1;     %发射功率
Pn=Ps/SNR;  %噪声方差
x=x(1:50);
z=sqrt(Pn/2)*(randn(size(x))+randn(size(x))*i); %生成白噪声
h=1;  %AWGN信道下,信道增益h=1
y=h*x+z;   %基带接受信号
%figure(2);subplot(211);scatter(real(y(1:10)),imag(y(1:10)),'filled'); %y的星座图title('QPSK接收星座图');for j=1:length(y)   Dist=abs(y(j)-A);                  %第j个接受信号与各星座图点的距离[~,Index]=min(Dist);               %找到距离最近的点x_est(j)=A(Index);                 %得到发射调制信号的估计s_est(2*j-1:2*j)=Maptable(Index,:);   %得到比特数据的估计
end
W=1:100;
%subplot(212);stem(W,s_est);title('QPSK解调后信号');for n=1:25Pe_t(n)=2*sqrt(2)/4*erfc(sqrt(2*n)*sin(pi/M))-sqrt(2)/4*erfc(sqrt(2*n)*sin(pi/M))* sqrt(2)/4*erfc(sqrt(2*n)*sin(pi/M));Pb_t(n)=0.5*Pe_t(n);
end
PESUM=0;
PBSUM=0
for n=1:25
for m=1:1000SNR=n;Ps=1;  Pn=Ps/SNR;z=sqrt(Pn/2)*(randn(size(x))+randn(size(x))*i);h=1;y=h*x+z;for j=1:length(y)Dist=abs(y(j)-A);[~,Index]=min(Dist);x_est(j)=A(Index);s_est(2*j-1:2*j)=Maptable(Index,:);end
for  k=1:100
if(s(k)+s_est(k)==1)PBSUM=PBSUM+1;
endend
for k1=1:50
if isequal(x(k1),x_est(k1))PESUM=PESUM+0;elsePESUM=PESUM+1;
end
end
end
Pb(n)=PBSUM/1000/100;
Pe(n)=PESUM/1000/50;
PBSUM=0;
PESUM=0;
endSNRX=1:25;
%figure(3);plot(SNRX,Pb); hold on;plot(SNRX,Pe);scatter(SNRX,Pe_t);scatter(SNRX,Pb_t, 'filled');
%xlabel('信噪比 SNR(r/dB)');title('AWGN信道下误码率与误符号率曲线'); axis([1 25 0 1]);grid on;hold off;H=sqrt(1/2)*(randn+i*randn);
Y=H*x+z;
%figure(4);subplot(211);scatter(real(Y(1:10)),imag(Y(1:10)),'filled');title('4PSK信道均衡前星座图');Y1=Y/H;
%subplot(212);scatter(real(Y1(1:10)),imag(Y1(1:10)),'filled');title('4PSK信道均衡后星座图');
PESUM1=0;
PBSUM1=0
for n=1:25for m=1:1000SNR=n;Ps=1;  Pn=Ps/SNR;z=sqrt(Pn/2)*(randn(size(x))+randn(size(x))*i);
Y1=(H*x+z)/H;for j=1:length(Y1)Dist=abs(Y1(j)-A);[~,Index]=min(Dist);x_est1(j)=A(Index);s_est1(2*j-1:2*j)=Maptable(Index,:);end
for  k=1:100
if(s(k)+s_est1(k)==1)PBSUM1=PBSUM1+1;
end
end
for k1=1:50
if isequal(x(k1),x_est1(k1))PESUM1=PESUM1+0;elsePESUM1=PESUM1+1;
end

四、运行结果




五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.

【数字信号调制】基于matlab GUI QPSK调制+解调【含Matlab源码 646期】相关推荐

  1. 【光学】基于matlab GUI杨氏双缝干涉【含Matlab源码 001期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI杨氏双缝干涉[含Matlab源码 001期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费 ...

  2. 【人脸识别】基于matlab GUI人数统计【含Matlab源码 2121期】

    ⛄一.人数统计简介(附课程作业报告) 1 课题背景 本课题为基于matlab的人数统计系统.近年来,很多行业对人流信息有极大的需求,如汽车公交站,地铁站台,商场出入口等.通过人数统计系统可以方便.可靠 ...

  3. 基于SSM的仓库管理系统(含完整源码+论文)

    后端框架:SSM 数据库:MySQL 开发工具:IDEA/Eclipse 系统介绍:本系统是基于SSM框架进行设计,MySQL作为底层数据库,前端采用bootstrap 模块大致介绍:包括库存管理.出 ...

  4. 【条形码识别】基于matlab GUI二维条形码识别【含Matlab源码 607期】

    ⛄一.二维条形码识别简介 采用数字图像处理技术对二维条码进行识别, 是二维条形码识别中较常用的方法, 它在处理污损的条形码方面有光电识别方法无法比拟的优势.另外图像式识别方法对识别角度的要求没有光电识 ...

  5. 【数字信号】基于DTMF双音多频电话拨号仿真含Matlab源码

    1 简介 DTMF信号是音频电话中的拨号信号,本文介绍了基于MATLAB的DTMF信号产生与检测的流程,重点分析了DTMF信号检测中的戈泽尔算法原理及参数选择.​ 2 部分代码 t1='123A';t ...

  6. 【心电信号】基于matlab GUI心电信号预处理【含Matlab源码 938期】

    ⛄一.心电信号预处理方法简介 理论知识参考文献:心电信号预处理方法研究 ⛄二.部分源代码 function varargout = kaishi(varargin) gui_Singleton = 1 ...

  7. matlab svm 语音识别,【情感识别】基于matlab支持向量机(SVM)的语音情感识别【含Matlab源码 543期】...

    一.简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数 ...

  8. 【数字信号】基于matlab GUI多音双频(DTMF)拨号音频解码仿真系统【含Matlab源码 1084期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号]基于matlab GUI多音双频(DTMF)拨号音频解码仿真系统[含Matlab源码 1084期] 点击上面蓝色字体,直接付费 ...

  9. MATLAB仿真QPSK调制信号通过AWGN信道的误符号率和误比特率分析

    MATLAB仿真QPSK调制信号通过AWGN信道的误符号率和误比特率分析 形式:程序 程序实现功能: 仿真正交相移键控QPSK信号调制的基带数字通信系统通过AWGN信道的误符号率(SER)和误比特率( ...

  10. 【数字信号】基于matlab GUI电话按键识别【含Matlab源码 2382期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号]基于matlab GUI电话按键识别[含Matlab源码 2382期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

最新文章

  1. “2017 和 2019的对比”刷屏!各路高手出招,画风逐渐失控
  2. you should specify the `steps` argument
  3. visual studio 2015开发nodejs教程1搭建环境
  4. 汇编指令prefix rep:
  5. Scala学习笔记:how to convert a StringRDD to Array
  6. Python---实验九作业
  7. Android 开机优化
  8. L1-022 奇偶分家 (10 分) — 团体程序设计天梯赛
  9. Strom 可定制任务调度策略(Pluggable Scheduler)
  10. 中国·哈尔滨国际友好城市冰雪汽车挑战赛开赛
  11. 图解机器学习算法(2) | 模型评估方法与准则(机器学习通关指南·完结)
  12. 达梦数据库-国产的荣光
  13. 销售宝:让客户无法拒绝的销售话术
  14. 项目管理中的成本绩效方法
  15. jQuery实现焦点图自动切换
  16. 2021安徽省高考成绩排名查询,2021年安徽高考成绩排名查询系统,安徽高考位次排名表...
  17. 5年内禁用支付宝和微信支付!多地公安出手:这些人摊上大事了
  18. 秒杀的微博时代到来了
  19. 大学生影视主题网页制作 HTML+CSS+JavaScript (你好,李焕英 5页)
  20. 80后裸婚样本 一对中等收入夫妻的裸婚实录

热门文章

  1. Pandorabox等类OpenWrt的路由器 实现后端设备接入IPV6(中继代理+NAT)
  2. Mysql重新安装(ubuntu)
  3. poj2485(Kruskal)
  4. [转]在Sql Server中将字符串分割成表格数据示例
  5. 【转】javascript 只允许输入数字总结
  6. 囧研究:焦虑的人能更快速地做出决定
  7. 扇贝有道180915每日一句
  8. unity制作预制体,动态加载预制体,实用资源的导出
  9. Atitit ati teck trend技术趋势资料包 C:\onedriver\OneDrive\Documents\0 it impttech topic\ati teck trend技术趋
  10. Atitit 信息安全常见基础技术 目录 1. 加密 1 2. 签名(防篡改) 1 2.1. 第4章 标识与认证技术  1 2.2. 第5章 授权与访问控制技术  1 2.3. 第9章 安全审计与责