基于matlab的码型转换.docx

上传人:b****6 文档编号:16041238 上传时间:2023-07-10 格式:DOCX 页数:21 大小:88.40KB
下载 相关 举报
基于matlab的码型转换.docx_第1页
第1页 / 共21页
基于matlab的码型转换.docx_第2页
第2页 / 共21页
基于matlab的码型转换.docx_第3页
第3页 / 共21页
基于matlab的码型转换.docx_第4页
第4页 / 共21页
基于matlab的码型转换.docx_第5页
第5页 / 共21页
基于matlab的码型转换.docx_第6页
第6页 / 共21页
基于matlab的码型转换.docx_第7页
第7页 / 共21页
基于matlab的码型转换.docx_第8页
第8页 / 共21页
基于matlab的码型转换.docx_第9页
第9页 / 共21页
基于matlab的码型转换.docx_第10页
第10页 / 共21页
基于matlab的码型转换.docx_第11页
第11页 / 共21页
基于matlab的码型转换.docx_第12页
第12页 / 共21页
基于matlab的码型转换.docx_第13页
第13页 / 共21页
基于matlab的码型转换.docx_第14页
第14页 / 共21页
基于matlab的码型转换.docx_第15页
第15页 / 共21页
基于matlab的码型转换.docx_第16页
第16页 / 共21页
基于matlab的码型转换.docx_第17页
第17页 / 共21页
基于matlab的码型转换.docx_第18页
第18页 / 共21页
基于matlab的码型转换.docx_第19页
第19页 / 共21页
基于matlab的码型转换.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于matlab的码型转换.docx

《基于matlab的码型转换.docx》由会员分享,可在线阅读,更多相关《基于matlab的码型转换.docx(21页珍藏版)》请在冰点文库上搜索。

基于matlab的码型转换.docx

基于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-filefor

%UNTITLED1,byitself,createsanewUNTITLED1orraisestheexisting

%singleton*.

%

%H=UNTITLED1returnsthehandletoanewUNTITLED1orthehandleto

%theexistingsingleton*.

%

%UNTITLED1('CALLBACK',hObject,eventData,handles,...)callsthelocal

%functionnamedCALLBACKinwiththegiveninputarguments.

%

%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

%LastModifiedbyGUIDE21-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})

=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

=hObject;

%Updatehandlesstructure

guidata(hObject,handles);

%UIWAITmakesuntitled1waitforuserresponse(seeUIRESUME)

%uiwait;

%---Outputsfromthisfunctionarereturnedtothecommandline.

functionvarargout=untitled1_OutputFcn(hObject,eventdata,handles)

%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);

%hObjecthandletofigure

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

%Getdefaultcommandlineoutputfromhandlesstructure

varargout{1}=;

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,'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

t=1:

length(f);

stairs(t-1,f)

axis([0length(f)-22])

xlabel('ASCIIÂë');

gridminor;

axes

t=1:

length(e);

stairs(t-1,e)

axis([0length(e)-22])

xlabel('AMI±àÂë');

gridminor;

axes

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,'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

t=1:

length(f);

stairs(t-1,f)

axis([0length(f)-22])

xlabel('ASCIIÂë');

gridminor;

axes

t=1:

length(n);

stairs(t-1,n)

axis([0length(n)-22])

xlabel('CMI±àÂë');

gridminor;

axes

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,'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)%Èç¹ûµ±Ç°ÂëÓëÇ°Ò»¸ö·ÇÁãÂëµÄ¼«ÐÔÏàͬ

decode(k-3:

k)=[0000];%Ôò¸ÃÂëÅÐΪVÂë²¢½«*00VÇåÁã

end

sign=input(k);%¼«ÐÔ±êÖ¾

end

end

decode=abs(decode);%ÕûÁ÷

axes

t=1:

length(x

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2