300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【数字信号调制】基于matlab GUI 2ASK+2FSK+2PSK调制解调仿真【含Matlab源码 1504期】

【数字信号调制】基于matlab GUI 2ASK+2FSK+2PSK调制解调仿真【含Matlab源码 1504期】

时间:2024-04-01 03:05:31

相关推荐

【数字信号调制】基于matlab GUI 2ASK+2FSK+2PSK调制解调仿真【含Matlab源码 1504期】

一、数字信号调制系统简介

二进制数字信号调制原理

数字调制是指用数字基带信号对载波的某些参量进行控制, 使载波的这些参量随基带信号的变化而变化。在通信系统中, 作为载波的正弦波有幅度、频率和相位3个参数, 对应的也就有3种基本的调制方式:调幅、调频和调相。由于数字信号不同与模拟信号的特殊性, 在数字载波通信中, 这3种基本的调制方式分别被称为幅移 (ASK) 、频移键控 (FSK) 和相移键控 (PSK) 。调制信号是二进制数字基带信号时, 这种调制称为二进制数字调制。在二进制数字调制中, 载波的幅度、频率和相位只有两种变化方式。

1 ASK调制

振幅键控是利用载波的幅度变化来传递数字信息, 而其频率和初相位保持不变。二进制幅度键控 (2ASK) 方式是数字调制方式中出现最早也是最简单的一种方法。这种方法最初用于电报系统, 二进制振幅键控常常作为研究其它数字调制方式的基础。2ASK调制信号只有0或1两个电平相乘的, 结果相当于将载频或者关断, 或者接通, 它的实际意义是当调制的数字信号为“1”时, 传输载波;当调制的数字信号为“0”时, 不传输载波。

2ASK信号的一般表达式为:

其中

2 FSK调制

频移键控是利用载波的频率变化来传递数字信息。在2FSK中, 载波的频率随二进制基带信号在f1和f0的两个频率点变化。它的实际意义是当调制的数字信号为“1”或“0”时传输f1或f2频率的载波。

其中ω1=2nf1, ω0=2nf0, θn为频率为f1的载波的初始相位, φn为频率为f0的载波的初始相位。令 为Dn的反码, 即

则2FSK信号可表示为:

3 PSK调制

相移键控是利用载波的相位变化来传递数字信息, 而振幅和频率保持不变。PSK调制时, 载波的相位随调制信号状态不同而改变。如果两个频率相同的载波同时开始振荡, 这两个频率同时达到正最大值, 同时达到零值, 同时达到负最大值, 此时它们就处于“同相”状态;如果一个达到正最大值时, 另一个达到负最大值, 则称为“反相”。一般把信号振荡一次 (一周) 作为360度。如果一个波比另一个波相差半个周期, 我们说两个波的相位差180度, 也就是反相。当传输数字信号时, “1”码控制发0度相位, “0”码控制发180度相位。相移键控有很好的抗干扰性, 在有衰落的信道中也能获得很好的效果。

二、部分源代码

%=============通信原理课程设计==============%function varargout = Login(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @Login_OpeningFcn, ...'gui_OutputFcn', @Login_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{:});endfunction Login_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);global user_flag;global lock_flag;user_flag=0;lock_flag=0;user=imread('user.jpg');user=imresize(user,[50,50],'bilinear');set(handles.USER,'CDATA',user);lock=imread('Lock.jpg');lock=imresize(lock,[50,50],'bilinear');set(handles.LOCK,'CDATA',lock);login=imread('login.jpg');set(handles.Login,'CDATA',login);function varargout = Login_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;function Login_Callback(hObject, eventdata, handles)global user_flag;global lock_flag;if user_flag~=1 && lock_flag==1errordlg('请输入学号','提示','modal')endif user_flag==1 && lock_flag~=1errordlg('请输入密码','提示','modal')endif user_flag~=1 && lock_flag~=1errordlg('请输入学号和密码','提示','modal')endif user_flag==1 && lock_flag==1run('Serein.m');close(Login);endfunction figure1_CreateFcn(hObject, eventdata, handles)Background=axes('units','normalized','pos',[0 0 1 1]);uistack(Background,'down');img=imread('Log.jpg');image(img);colormap grayset(Background,'handlevisibility','off','visible','off');function Login_CreateFcn(hObject, eventdata, handles)%用户名输入function UserInput_Callback(hObject, eventdata, handles)global user_flag;ID=get(hObject,'String');if (str2num(ID)~=0)user_flag=1;endfunction UserInput_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction uipanel2_CreateFcn(hObject, eventdata, handles)function axes1_CreateFcn(hObject, eventdata, handles)function axes3_CreateFcn(hObject, eventdata, handles)function LockInput_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end%密码输入function LockInput_Callback(hObject, eventdata, handles)global lock_flag;password=get(hObject,'String');if (str2num(password)~=0)lock_flag=1;endfunction axes4_CreateFcn(hObject, eventdata, handles)function axes5_CreateFcn(hObject, eventdata, handles)function USER_Callback(hObject, eventdata, handles)function LOCK_Callback(hObject, eventdata, handles)function [Output] = PSK_Chart(SNR,PERIOD)i=10;j=5000;t=linspace(0,5,j);fc=10;fm=i/5;B=2*fm;error=0; %存取错误码元的个数for echo=1:1:PERIOD %一共循环echo个周期a=round(rand(1,i));st1=t;for n=1:10if a(n)<1for m=j/i*(n-1)+1:j/i*nst1(m)=0;endelsefor m=j/i*(n-1)+1:j/i*nst1(m)=1;endendendfigure(1);subplot(421);plot(t,st1);title('二进制基带信号');axis([0,5,-1,2]);%二进制基带信号求反st2=t;for k=1:jif st1(k)>=1st2(k)=0;elsest2(k)=1;endendst3=st1-st2;subplot(422);plot(t,st3);title('双极性基带信号');axis([0,5,-2,2]);%产生载波信号s1=sin(2*pi*fc*t);subplot(423);plot(s1);title('载波信号');%2PSK调制e_psk=st3.*s1;subplot(424);plot(t,e_psk);title('2PSK调制信号');%高斯白噪声psk=awgn(e_psk,SNR);subplot(425);plot(t,psk);title('加噪后信号');%带通滤波器[b1,a1]=ellip(4,0.11,30,[9,11]*2/40);psk=filter(b1,a1,psk);psk=psk.*s1;subplot(426);plot(t,psk);title('与载波相乘后信号');[B,A]=butter(4,0.14);psk=filter(B,A,psk);subplot(427);plot(t,psk);title('低通滤波后');%抽样判决for m=0:i-1if psk(1,m*500+250)<0for j=m*500+1:(m+1)*500psk(1,j)=0;endelsefor j=m*500+1:(m+1)*500psk(1,j)=1;endendendfor k=1:1:5000 if st1(k)~=psk(k)error=error+1;endendsubplot(428);plot(t,psk);axis([0,5,-1,2]);title('抽样判决后波形');enderror_rate=error/500/(10*PERIOD); %计算误码率Output=error/500;end

三、运行结果

四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,.

[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,.

[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,.

[4]曾祥龙,梁清梅,索丽敏.运用MATLAB实现对数字信号调制的仿真[J].黑龙江科技信息. ,(32)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。