资源描述:
《数字基带信号程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1数字基带信号的程序利用Matlab实现AMI、HDB3、Manchester、CMI码的编码与译码,并利用Matlab中的GUIDE工具,设计人机交互界面,实现基带传输码的编码译码工作。其实现的程序如下:%对界面的控制函数functionvarargout=untitled5(varargin)gui_Singleton=1;gui_State=struct(‘gui_Name’,mfilename,…‘gui_Singleton’,gui_Singleton,…‘gui_OpeningFcn’,@untitled5_OpeningFcn,…‘gui_O
2、utputFcn’,@untitled5_OutputFcn,…‘gui_LayoutFcn’,[],…‘gui_Callback’,[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});endfunctionuntitled5_Openin
3、gFcn(hObject,eventdata,handles,varargin)handles.output=hObject;guidata(hObject,handles);xn=[101100000001100000010]ifstrcmp(get(hObject,’Visible’),off)stairs([0:length(xn)-1],xn);%初始图像显示axis([0length(xn)-22]);endfunctionvarargout=untitled5_OutputFcn(hObject,eventdata,handles)vararg
4、out{1}=handles.output;%对确认文本框的控制函数functionpushbutton1_Callback(hObject,eventdata,handles)axes(handles.axes1);cla;%基带信号的编码函数xn=[101100000001100000010]%曼彻斯特编码y3=xn;%输出y3初始化fork=1:length(xn)ifxn(k)==1y3(2*k-1)=1;y3(2*k)=0;elsey3(2*k-1)=0;y3(2*k)=1;endendmanchester=y3(1:length(y3))%解码
5、input=xn;decode=input;%输出初始化sign=0;%极性标志初始化%fork=1:length(xn)ifinput(k)~=0ifsign==y2(k)%如果当前码与前一个非零码的极性相同decode(k-3:k)=[0000];%则该码判为V码并将*00V清零endsign=input(k);%极性标志endend%decode=abs(decode)%整流(abs取绝对值)error=sum([xn’-decode’])%解码的正确性检验%选择码型后图像输出popup_sel_index=get(handles.popupmenu
6、1,’Value’);switchpopup_sel_indexcase1%AMI码输出stairs([0:length(xn)-1],y1);axis([0length(xn)-22]);title(‘AMI码’)case2%HDB3码输出stairs([0:length(xn)-1],y2);axis([0length(xn)-22]);title(‘HDB3码’)case3%manchester码输出stairs([0:length(y3)-1],y3);axis([0length(y3)-22]);title(‘manchester码’)case4
7、%CMI码输出stairs([0:length(y4)-1],y4);axis([0length(y4)-22]);title(‘CMI码’)case5%解码输出stairs([0:length(xn)-1],decode);axis([0length(xn)-22]);title(‘解码序列’)end%请求输入文本框控制函数functionFileMenu_Callback(hObject,eventdata,handles)functionOpenMenuItem_Callback(hObject,eventdata,handles)file=uige
8、tfile(‘*.fig’);if~isequal(file,0)