毕业论文基于matlab的码型转换说明书.docx
- 文档编号:11679706
- 上传时间:2023-03-30
- 格式:DOCX
- 页数:36
- 大小:35.86KB
毕业论文基于matlab的码型转换说明书.docx
《毕业论文基于matlab的码型转换说明书.docx》由会员分享,可在线阅读,更多相关《毕业论文基于matlab的码型转换说明书.docx(36页珍藏版)》请在冰豆网上搜索。
毕业论文基于matlab的码型转换说明书
实验内容:
利用Matlab软件的GUI界面编程,做一个简单的界面,通过此界面调用相关的程序去实现由抽样判决后的AMI码型、CMI码型和HDB3码型数字序列恢复出原始的PCM脉冲编码信号。
实验目的:
1,熟悉Matlab的GUI的编程操作,学会运用GUI来建立一个界面
2.掌握AMI,CMI,HDB3码型的特点和意义,学会将PCM脉冲编码信号转化为AMI,CMI,HDB3的编码以及AMI,CMI,HDB3解码的方式。
实验方法:
实验中采用的方法是先建立大概的界面,其中包括输入框、按钮、提示内容及坐标系等。
然后再对各种组件设置好属性,并对各个组件编写回调函数,最后进行调试验证饥渴。
实验代码:
1.AMI码型转换:
%%%%%%%%%%%%编码%%%%%%%%%%%%%
p=-1;
fori=1:
length(f);
iff(i)==1
e(i)=(-1)*p;
p=e(i);
else
e(i)=f(i);
end
end
%%%%%%%%%%%%译码%%%%%%%%%%%%
fori=1:
length(f);
ife(i)~=0
l(i)=1;
else
e(i)=0;
end
end
编码:
代码中的f代表着输入字符串转化后的ASCII码,用变量p来实现原信号中1的正负交替。
例如,f
(1)=1,则e
(1)=1,p=1;f
(2)=1,则e
(2)=-1,p=-1。
如此就可以得到正负1交替了。
译码:
当e(i)不等于0,就把结果等于1。
2.CMI码型转换
%%%%%%%%%%%%编码%%%%%%%%%%%%%
m=1;
p=-1;
fori=1:
length(f)
if(f(i)==1&m==1)
s(i)=3;
m=m*p;
elseif(f(i)==1&m==-1)
s(i)=0;
m=m*p;
else
s(i)=1;
end
end
end
k=dec2bin(s,2);
l=k';
x=l(:
);
y=x';
n=str2num(y
(1));
fori=2:
length(y)
n=[nstr2num(y(i))];
end
%%%%%%%%%%%%译码%%%%%%%%%%%%%
ifn
(1)==0
ifn
(2)==1
cm=[0];
else
cm=[1];
end
else
cm=[1];
end
r=3;
whiler ifn(r)==0 ifn(r+1)==1 cm=[cm0]; else cm=[cm1]; end else cm=[cm1]; end r=r+2; end 3.HDB3码型转换 %%%%%%%%%%%%编码%%%%%%%%%%%%% yn=xn;%输出yn初始化 num=0;%计数器初始化 fork=1: length(xn) ifxn(k)==1 num=num+1;%"1"计数器 ifnum/2==fix(num/2)%奇数个1时输出-1,进行极性交替 yn(k)=1; else yn(k)=-1; end end end %HDB3编码 num=0;%连零计数器初始化 yh=yn;%输出初始化 sign=0;%极性标志初始化为0 V=zeros(1,length(yn));%V脉冲位置记录变量 B=zeros(1,length(yn));%B脉冲位置记录变量 fork=1: length(yn) ifyn(k)==0 num=num+1;%连“0”个数计数 ifnum==4%如果4连“0” num=0;%计数器清零 yh(k)=1*yh(k-4); %让0000的最后一个0改变为与前一个非零符号相同极性的符号 V(k)=yh(k);%V脉冲位置记录 ifyh(k)==sign%如果当前V符号与前一个V符号的极性相同 yh(k)=-1*yh(k);%则让当前V符号极性反转,以满足V符号间相互极性反转要求 yh(k-3)=yh(k);%添加B符号,与V符号同极性 B(k-3)=yh(k);%B脉冲位置记录 V(k)=yh(k);%V脉冲位置记录 yh(k+1: length(yn))=-1*yh(k+1: length(yn)); %并让后面的非零符号从V符号开始再交替变化 end sign=yh(k);%记录前一个V符号的极性 end else num=0;%当前输入为“1”则连“0”计数器清零 end end %%%%%%%%%%%%译码%%%%%%%%%%%%% input=yh;%HDB3码输入 decode=input;%输出初始化 sign=0;%极性标志初始化 fork=1: length(yh) ifinput(k)~=0 ifsign==yh(k)%如果当前码与前一个非零码的极性相同 decode(k-3: k)=[0000];%则该码判为V码并将*00V清零 end sign=input(k);%极性标志 end end decode=abs(decode);%整流 实验现象: 总体界面: AMI: CMI: HDB3: 总结: 1.本次实验中因为对画方波不太熟悉,在使用stairs函数时,方波图总是在最后少了一位,后来经查询后才知道stairs的正确用法。 2.由于对GUI界面设置的不熟悉,很多细节都没做到位,界面的美观有待提高。 3.在编代码是经常没有写注释,导致后来有些变量混淆了。 附录: 全部代码 functionvarargout=untitled1(varargin) %UNTITLED1M-fileforuntitled1.fig %UNTITLED1,byitself,createsanewUNTITLED1orraisestheexisting %singleton*. % %H=UNTITLED1returnsthehandletoanewUNTITLED1orthehandleto %theexistingsingleton*. % %UNTITLED1('CALLBACK',hObject,eventData,handles,...)callsthelocal %functionnamedCALLBACKinUNTITLED1.Mwiththegiveninputarguments. % %UNTITLED1('Property','Value',...)createsanewUNTITLED1orraisesthe %existingsingleton*.Startingfromtheleft,propertyvaluepairsare %appliedtotheGUIbeforeuntitled1_OpeningFunctiongetscalled.An %unrecognizedpropertynameorinvalidvaluemakespropertyapplication %stop.Allinputsarepassedtountitled1_OpeningFcnviavarargin. % %*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone %instancetorun(singleton)". % %Seealso: GUIDE,GUIDATA,GUIHANDLES %Edittheabovetexttomodifytheresponsetohelpuntitled1 %LastModifiedbyGUIDEv2.521-Dec-201419: 55: 20 %Begininitializationcode-DONOTEDIT gui_Singleton=1; gui_State=struct('gui_Name',mfilename,... 'gui_Singleton',gui_Singleton,... 'gui_OpeningFcn',@untitled1_OpeningFcn,... 'gui_OutputFcn',@untitled1_OutputFcn,... 'gui_LayoutFcn',[],... 'gui_Callback',[]); ifnargin&&ischar(varargin{1}) gui_State.gui_Callback=str2func(varargin{1}); end ifnargout [varargout{1: nargout}]=gui_mainfcn(gui_State,varargin{: }); else gui_mainfcn(gui_State,varargin{: }); end %Endinitializationcode-DONOTEDIT %---Executesjustbeforeuntitled1ismadevisible. functionuntitled1_OpeningFcn(hObject,eventdata,handles,varargin) %Thisfunctionhasnooutputargs,seeOutputFcn. %hObjecthandletofigure %eventdatareserved-tobedefinedinafutureversionofMATLAB %handlesstructurewithhandlesanduserdata(seeGUIDATA) %varargincommandlineargumentstountitled1(seeVARARGIN) %Choosedefaultcommandlineoutputforuntitled1 handles.output=hObject; %Updatehandlesstructure guidata(hObject,handles); %UIWAITmakesuntitled1waitforuserresponse(seeUIRESUME) %uiwait(handles.maxing); %---Outputsfromthisfunctionarereturnedtothecommandline. functionvarargout=untitled1_OutputFcn(hObject,eventdata,handles) %varargoutcellarrayforreturningoutputargs(seeVARARGOUT); %hObjecthandletofigure %eventdatareserved-tobedefinedinafutureversionofMATLAB %handlesstructurewithhandlesanduserdata(seeGUIDATA) %Getdefaultcommandlineoutputfromhandlesstructure varargout{1}=handles.output; functionedit_Callback(hObject,eventdata,handles) %hObjecthandletoedit(seeGCBO) %eventdatareserved-tobedefinedinafutureversionofMATLAB %handlesstructurewithhandlesanduserdata(seeGUIDATA) %Hints: get(hObject,'String')returnscontentsofeditastext %str2double(get(hObject,'String'))returnscontentsofeditasadouble %---Executesduringobjectcreation,aftersettingallproperties. functionedit_CreateFcn(hObject,eventdata,handles) %hObjecthandletoedit(seeGCBO) %eventdatareserved-tobedefinedinafutureversionofMATLAB %handlesempty-handlesnotcreateduntilafterallCreateFcnscalled %Hint: editcontrolsusuallyhaveawhitebackgroundonWindows. %SeeISPCandCOMPUTER. ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %---Executesonbuttonpressinami. functionami_Callback(hObject,eventdata,handles) user_string=get(handles.edit,'string'); a=dec2bin(user_string,8); b=a'; c=b(: ); d=c'; f=str2num(d (1)); fori=2: length(d) f=[fstr2num(d(i))]; end f=[f0]; %%%%%%%%%%%%±àÂë%%%%%%%%%%%%% p=-1; fori=1: length(f); iff(i)==1 e(i)=(-1)*p; p=e(i); else e(i)=f(i); end end %%%%%%%%%%%%ÒëÂë%%%%%%%%%%%% fori=1: length(f); ife(i)~=0 l(i)=1; else e(i)=0; end end axes(handles.axes1) t=1: length(f); stairs(t-1,f) axis([0length(f)-22]) xlabel('ASCIIÂë'); gridminor; axes(handles.axes2) t=1: length(e); stairs(t-1,e) axis([0length(e)-22]) xlabel('AMI±àÂë'); gridminor; axes(handles.axes3) t=1: length(l); stairs(t-1,l) axis([0length(l)-22]) xlabel('AMIÒëÂë'); gridminor; %hObjecthandletoami(seeGCBO) %eventdatareserved-tobedefinedinafutureversionofMATLAB %handlesstructurewithhandlesanduserdata(seeGUIDATA) %---Executesonbuttonpressincmi. functioncmi_Callback(hObject,eventdata,handles) user_string=get(handles.edit,'string'); a=dec2bin(user_string,8); b=a'; c=b(: ); d=c'; f=str2num(d (1)); fori=2: length(d) f=[fstr2num(d(i))]; end f=[f0]; %%%%%%%%%%%%±àÂë%%%%%%%%%%%%% m=1; p=-1; fori=1: length(f) if(f(i)==1&m==1) s(i)=3; m=m*p; elseif(f(i)==1&m==-1) s(i)=0; m=m*p; else s(i)=1; end end end k=dec2bin(s,2); l=k'; x=l(: ); y=x'; n=str2num(y (1)); fori=2: length(y) n=[nstr2num(y(i))]; end %%%%%%%%%%%%ÒëÂë%%%%%%%%%%%%% ifn (1)==0 ifn (2)==1 cm=[0]; else cm=[1]; end else cm=[1]; end r=3; whiler ifn(r)==0 ifn(r+1)==1 cm=[cm0]; else cm=[cm1]; end else cm=[cm1]; end r=r+2; end axes(handles.axes1) t=1: length(f); stairs(t-1,f) axis([0length(f)-22]) xlabel('ASCIIÂë'); gridminor; axes(handles.axes2) t=1: length(n); stairs(t-1,n) axis([0length(n)-22]) xlabel('CMI±àÂë'); gridminor; axes(handles.axes3) t=1: length(cm); stairs(t-1,cm) axis([0length(cm)-22]) xlabel('CMIÒëÂë'); gridminor; %hObjecthandletocmi(seeGCBO) %eventdatareserved-tobedefinedinafutureversionofMATLAB %handlesstructurewithhandlesanduserdata(seeGUIDATA) %---Executesonbuttonpressinhdb3. functionhdb3_Callback(hObject,eventdata,handles) user_string=get(handles.edit,'string'); a=dec2bin(user_string,8); b=a'; b=a'; c=b(: ); d=c'; xn=str2num(d (1)); fori=2: length(d) xn=[xnstr2num(d(i))]; end xn=[xn0]; %%%%%%%%%%%%±àÂë%%%%%%%%%%%%% yn=xn;%Êä³öyn³õʼ»¯ num=0;%¼ÆÊýÆ÷³õʼ»¯ fork=1: length(xn) ifxn(k)==1 num=num+1;%"1"¼ÆÊýÆ÷ ifnum/2==fix(num/2)%ÆæÊý¸ö1ʱÊä³ö-1,½øÐм«ÐÔ½»Ìæ yn(k)=1; else yn(k)=-1; end end end %HDB3±àÂë num=0;%Á¬Áã¼ÆÊýÆ÷³õʼ»¯ yh=yn;%Êä³ö³õʼ»¯ sign=0;%¼«ÐÔ±êÖ¾³õʼ»¯Îª0 V=zeros(1,length(yn));%VÂö³åλÖüǼ±äÁ¿ B=zeros(1,length(yn));%BÂö³åλÖüǼ±äÁ¿ fork=1: length(yn) ifyn(k)==0 num=num+1;%Á¬¡°0¡±¸öÊý¼ÆÊý ifnum==4%Èç¹û4Á¬¡°0¡± num=0;%¼ÆÊýÆ÷ÇåÁã yh(k)=1*yh(k-4); %ÈÃ0000µÄ×îºóÒ»¸ö0¸Ä±äΪÓëÇ°Ò»¸ö·ÇÁã·ûºÅÏàͬ¼«ÐԵķûºÅ V(k)=yh(k);%VÂö³åλÖüǼ ifyh(k)==sign%Èç¹ûµ±Ç°V·ûºÅÓëÇ°Ò»¸öV·ûºÅµÄ¼«ÐÔÏàͬ yh(k)=-1*yh(k);%ÔòÈõ±Ç°V·ûºÅ¼«ÐÔ·´×ª,ÒÔÂú×ãV·ûºÅ¼äÏ໥¼«ÐÔ·´×ªÒªÇó yh(k-3)=yh(k);%Ìí¼ÓB·ûºÅ,ÓëV·ûºÅͬ¼«ÐÔ B(k-3)=yh(k);%BÂö³åλÖüǼ V(k)=yh(k);%VÂö³åλÖüǼ yh(k+1: length(yn))=-1*yh(k+1: length(yn)); %²¢ÈúóÃæµÄ·ÇÁã·ûºÅ´ÓV·ûºÅ¿ªÊ¼ÔÙ½»Ìæ±ä»¯ end sign=yh(k);%¼Ç¼ǰһ¸öV·ûºÅµÄ¼«ÐÔ end else num=0;%µ±Ç°ÊäÈëΪ¡°1¡±ÔòÁ¬¡°0¡±¼ÆÊýÆ÷ÇåÁã end end %%%%%%%%%%%%ÒëÂë%%%%%%%%%%%%% input=yh;%HDB3ÂëÊäÈë decode=input;%Êä³ö³õʼ»¯ sign=0;%¼«ÐÔ±êÖ¾³õʼ»¯ fork=1: length(yh) ifinput(k)~=0 ifsign==yh(k)%Èç¹ûµ±Ç°ÂëÓëÇ°Ò»¸ö
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 基于 matlab 转换 说明书