【数字信号调制】基于matlab GUI FSK调制+解调【含Matlab源码 645期】
一、获取代码方式
获取代码方式1:
完整代码已上传我的资源: 【数字信号调制】基于matlab GUI FSK调制+解调【含Matlab源码 645期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、FSK简介
1 FSK时域信号
数字频率调制(FM)是利用载波的频率传输信息的一种调制方式,其中最简单的是二进制频移键控(2FSK)。FM分为非连续相位FSK和连续相位FSK(CPFSK),两者的区别在于码元转换时刻的载波相位是否连续。
2FSK信号波形如下图所示,信号可以看成是频载为f1和f2的两个振幅键控信号的合成,2FSK信号可表示为:
式中,
式中,A是载波振幅,Tb为数字码元周期,{bn}为所传送的数字序列。
相位连续的FSK信号在码元转换时刻的相位是连续的,波形如下图所示。
此时调频信号可以表示为:
式中,fc是未调载波的频率,\delta fd是频偏因子。当m(t)为归一化基带信号时,\delta fd为峰值频偏,令
式中,h为调制指数或频移指数。
2 相关系数与频谱特性
设FSK信号在一个码元期间内的波形为:
这两个信号波形的相关系数定义为:
式中,
则带入上式有:
通常
则相关系数简化为:
其波形变化图如下所示:
从图中可以看出,两个信号的相关系数在k*pi的时候为零,也就是说它们具有正交特性。
CPFSK信号的功率谱形状直接由调制指数h确定。当h=0.5时,功率谱曲线为单峰;当h=0.715时,功率谱曲线呈现双峰;当h=1时,功率谱曲线的双峰变成了两条线状谱,且每条线状谱所占的功率都是信号功率的1/4,与离散相位2FSK信号的功率谱曲线相同;当h>1时,双峰的距离逐渐增加。
3 非相干解调
3.1相乘微分型AFC环解调法
AFC环是一个负反馈系统,从电路结构上看,AFC环主要由三种结构形式,比较广泛的是相乘微分型AFC环路。其架构如下图所示:
如果接收信号与本振信号存在频差,则在一定时间间隔内必然存在相差,将鉴相器输出的相位误差信号微分后,得到反映频差的误差信号,此信号经环路滤波器平滑处理后,控制VCO/NCO的振荡频率向输入信号频率靠近,最终使得频差近似为零。
设输入信号
VCO输入信号
则
显然有
当输入信号为单载波信号时,
故有
上式反映了输入信号和VCO输出信号的频差。对于FSK信号来讲,上式即为调制信号,对其进行滤波判决,即可完成FSK信号的解调。
3.2 包络检波解调法
2FSK信号的包络检波法解调方框图如下,可以视为由两路2ASK解调电路组成。这里的两个带通滤波器起分路作用,用以分开两路2ASK信号。上支路对应
下支路对应
经包络检测后分别取出他们的包络m1(t)和m2(t)。将两路滤波后的包络信号相减,在经过抽样判决,当判决值大于等于0时,判决为1,否则判决为0;
4 相干解调原理
4.1最佳FSK相干解调器
最佳解调器结构如下图所示,在接收端产生一直信号s1(t)和s2(t)的波形,分别将其与输入波形y(t)在相乘器中相乘,再进行积分。在t=Tb时刻,将两积分器的结果取样,并在比较器中比较判决。因为解调器是对接收码元逐个进行处理的,故在每个码元的终止时刻,在取样之后要将积分器清零,以便接着处理下一个码元。
相干载波s1(t)和s2(t)通常需要采用载波锁相环路提取,位同步信号则需要专门的位同步锁相环路提取。
4.2 易于实现的FSK相干解调器
4.1中的结构难以实现,通常采用下图结构实现:
FSK相干解调与ASK相干解调相似,FSK只是在用带通滤波器将信号分成上下两路后,在判决输出前增加一个减法器即可。
三、部分源代码
function varargout = GUI_2FSK(varargin)
% GUI_2FSK MATLAB code for GUI_2FSK.fig
% GUI_2FSK, by itself, creates a new GUI_2FSK or raises the existing
% singleton*.
%
% H = GUI_2FSK returns the handle to a new GUI_2FSK or the handle to
% the existing singleton*.
%
% GUI_2FSK('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in GUI_2FSK.M with the given input arguments.
%
% GUI_2FSK('Property','Value',...) creates a new GUI_2FSK or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before GUI_2FSK_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to GUI_2FSK_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_2FSK% Last Modified by GUIDE v2.5 30-Nov-2018 14:09:53% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @GUI_2FSK_OpeningFcn, ...'gui_OutputFcn', @GUI_2FSK_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_2FSK is made visible.
function GUI_2FSK_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_2FSK (see VARARGIN)% Choose default command line output for GUI_2FSK
handles.output = hObject;i=20; %二级制基带数据个数
fc=1000; %抽样频率
j=i*fc;
s=round(rand(1,i)); %产生二级制基带数
t=linspace(0,i,j);
f1=10; %载波1频率
f2=30; %载波2频率
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生基带信号
s1=t;
for n=1:iif s(n)<1;for m=j/i*(n-1)+1:j/i*ns1(m)=0;endelsefor m=j/i*(n-1)+1:j/i*ns1(m)=1;endend
ends2=t;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基带信号求反for n=1:j;if s1(n)>=1;s2(n)=0;elses2(n)=1;endend;%figure(1);subplot(411);plot(t,s1);title('基带信号');axis([0,i,-1,2]);%subplot(412);plot(t,s2);title('基带信号求反');axis([0,i,-1,2]);F1=cos(2*pi*f1*t); %载波信号1F2=cos(2*pi*f2*t); %载波信号2%subplot(413);plot(t,F1);title('载波信号1');Fsk=s1.*F1+s2.*F2; %2Fsk调制%figure(2);subplot(311);plot(t,Fsk);title('2FSK调制信号') SNR_dB=15; %定义信噪比
SNR=10^(SNR_dB/10); %定义线性信噪比
Ps=1; %发射功率
Pn=Ps/SNR; %噪声方差
F3=cos(2*pi*f1*t+pi/4);
F4=cos(2*pi*f2*t+pi/4);
Fsk1=s1.*F3+s2.*F4;
t1=length(t);
z=sqrt(Pn/2)*randn(1,t1);
h=1; %AWGN信道下,信道增益h=1
Fskh=Fsk1*h+z; %通过AWGN信道后产生pi/4的相移
%subplot(312);plot(t,z); %噪声波形 title('噪声波形')%subplot(313);plot(t,Fskh);title('通过信道加噪声后的接受信号'); axis([0,i,-1,1]);b1=fir1(101,[10/500 15/500]); %设置带通滤波器参数
b2=fir1(101,[30/500 40/500]);
Fskh1=filter(b1,1,Fskh); %经过带通滤波器后的信号
Fskh2=filter(b2,1,Fskh);
%figure(3);subplot(211);plot(t,Fskh1);title('经过带通滤波器b1后的波形');axis([0,i,-1,1]);%subplot(212);plot(t,Fskh2);title('经过带通滤波器b2后的波形');FskH1=Fskh1.*Fskh1;
FskH2=Fskh2.*Fskh2; %经过相乘器
%figure(4);subplot(211);plot(t,FskH1);title('经过相乘器后Fskh1的波形')%subplot(212);plot(t,FskH2);title('经过相乘器后Fskh2的波形')bn=fir1(101,[2/500 10/500]); %设置低通滤波器参数
st1=filter(bn,1,FskH1); %经过低通滤波器
st2=filter(bn,1,FskH2);%figure(5) ;subplot(211);plot(t,st1);title('经过低通滤波器bn后的波形')%subplot(212);plot(t,st2);title('经过低通滤波器bn后的波形')%判决
st1_sum=zeros(1,i);
st2_sum=zeros(1,i);
for p=1:i %抽样判决,在每一个基带代码带宽内按抽样频率抽样并相加比较for j=1000*(p-1)+1:1000*pst1_sum(p)=st1_sum(p)+st1(j);st2_sum(p)=st2_sum(p)+st2(j);endif(st1_sum(p)>=st2_sum(p))s_est(p)=1;else s_est(p)=0;end
ends3=t; %解调后的基带信号
for n=1:iif s_est(n)<1;for m=j/i*(n-1)+1:j/i*ns3(m)=0;endelsefor m=j/i*(n-1)+1:j/i*ns3(m)=1;endend
end
%figure(6);subplot(211);plot(t,st);title('经过抽样判决器后的波形')%subplot(212);plot(t,Fskh);title('原始的波形');axis([0,i,-1,1]);%%%%%%%%%%%%%%%%%实际误码率曲线和理论误码率对比
PBSUM=0;
for n=1:10 %信噪比循环for m=1:1000 %蒙特卡洛循环SNR=n;
Ps=100; %发射功率
Pn=Ps/SNR;
z=sqrt(Pn/2)*randn(1,t1); %噪声方差
h=1;
Fskh=Fsk1*h+z; %通过AWGN信道后产生pi/4的相移b1=fir1(101,[10/500 15/500]);
b2=fir1(101,[30/500 40/500]); %设置带通参数
Fskh1=filter(b1,1,Fskh);
Fskh2=filter(b2,1,Fskh); %经过带通滤波器后的信号
FskH1=Fskh1.*Fskh1;
FskH2=Fskh2.*Fskh2; %经过相乘器
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.
【数字信号调制】基于matlab GUI FSK调制+解调【含Matlab源码 645期】相关推荐
- 【光学】基于matlab GUI杨氏双缝干涉【含Matlab源码 001期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI杨氏双缝干涉[含Matlab源码 001期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费 ...
- 【人脸识别】基于matlab GUI人数统计【含Matlab源码 2121期】
⛄一.人数统计简介(附课程作业报告) 1 课题背景 本课题为基于matlab的人数统计系统.近年来,很多行业对人流信息有极大的需求,如汽车公交站,地铁站台,商场出入口等.通过人数统计系统可以方便.可靠 ...
- 基于SSM的仓库管理系统(含完整源码+论文)
后端框架:SSM 数据库:MySQL 开发工具:IDEA/Eclipse 系统介绍:本系统是基于SSM框架进行设计,MySQL作为底层数据库,前端采用bootstrap 模块大致介绍:包括库存管理.出 ...
- 【条形码识别】基于matlab GUI二维条形码识别【含Matlab源码 607期】
⛄一.二维条形码识别简介 采用数字图像处理技术对二维条码进行识别, 是二维条形码识别中较常用的方法, 它在处理污损的条形码方面有光电识别方法无法比拟的优势.另外图像式识别方法对识别角度的要求没有光电识 ...
- 【数字信号】基于DTMF双音多频电话拨号仿真含Matlab源码
1 简介 DTMF信号是音频电话中的拨号信号,本文介绍了基于MATLAB的DTMF信号产生与检测的流程,重点分析了DTMF信号检测中的戈泽尔算法原理及参数选择. 2 部分代码 t1='123A';t ...
- 【心电信号】基于matlab GUI心电信号预处理【含Matlab源码 938期】
⛄一.心电信号预处理方法简介 理论知识参考文献:心电信号预处理方法研究 ⛄二.部分源代码 function varargout = kaishi(varargin) gui_Singleton = 1 ...
- matlab svm 语音识别,【情感识别】基于matlab支持向量机(SVM)的语音情感识别【含Matlab源码 543期】...
一.简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数 ...
- fsk调制解调实验报告 matlab,基于MATLAB的-FSK调制与解调-通信原理实验
<基于MATLAB的-FSK调制与解调-通信原理实验>由会员分享,可在线阅读,更多相关<基于MATLAB的-FSK调制与解调-通信原理实验(2页珍藏版)>请在人人文库网上搜索. ...
- 【数字信号】基于matlab GUI多音双频(DTMF)拨号音频解码仿真系统【含Matlab源码 1084期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号]基于matlab GUI多音双频(DTMF)拨号音频解码仿真系统[含Matlab源码 1084期] 点击上面蓝色字体,直接付费 ...
- 【数字信号】基于matlab GUI电话按键识别【含Matlab源码 2382期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号]基于matlab GUI电话按键识别[含Matlab源码 2382期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...
最新文章
- 【剑指Offer】23、二叉搜索树的后序遍历序列
- 搜索插入位置—leetcode35
- Java技术:为什么不推荐使用BeanUtils属性转换工具
- 基于nchan打造百万用户的聊天室
- JSP 简介(转载)
- linux中兴上网客户端,中兴新支点N-Print,简单高效Linux桌面操作系统网络打印方案...
- html 将光标移动到某行,如何将QTextBrowser(其中包含html表)的光标移动到PyQt5中的特定行?...
- python教程视频哪个好-Python教学视频哪个好?老男孩Python培训
- C语言电话薄登录系统,求助 哈稀表编电话薄程序(c语言) 算法
- 远程服务器返回错误 (411) 所需的长度。
- Jfinal的七牛云存储插件:qiniuPlugin for jfinal.
- Atlas初步了解 [转]
- 使用QT调用FFMPEG库部署到Android设备、完成视频音频应用开发
- 如何在阿里云上购买域名并备案Iot studio
- 把PC上的蓝牙适配器模拟成蓝牙GPS(转贴)
- 百度翻译API错误码大全(建议收藏)
- java 模拟天眼查登陆,模拟天眼查登陆问题
- 居然可以用jQuery实现360度汽车产品3D旋转展示酷炫特效 使用你的小鼠标来试试吧
- 成功解决data too long for column 'name' at row 1
- php中switch语句的理解,php中switch语句的使用详解
热门文章
- D 洛谷 P3602 Koishi Loves Segments [贪心 树状数组+堆]
- hdu 4128 Running relay (线性规划转半平面交)
- .NET CF获取当前dll及其调用程序的文件名和完全路径
- 卡尔曼滤波(Kalman filtering)算法学习小记
- This is why you don’t think you’re creative 你为什么会觉得自己没有创造力?
- 190120每日一句
- vs2013 mfc资源在另一个编辑器中打开
- Atitit 2019技术趋势与没落技术 目录 1.1. abcdAtitit 技术领域趋势 abcd研究总结AI(人工智能)BlockChain(区块链)、Cloud(云)、和Data(大数据)
- Atitit orm 之道 艾龙著 1. 一、ORM的由来	1 2. ORM的组成: 	2 3. 常见的ORM框架: 	3 4. 、ORM与数据持久化的关系	3 5. Atitit
- Atitit easyui翻页组件与vue的集成解决方案attilax总结