AMI编码主程序.docx

上传人:b****2 文档编号:2466031 上传时间:2023-05-03 格式:DOCX 页数:12 大小:314.17KB
下载 相关 举报
AMI编码主程序.docx_第1页
第1页 / 共12页
AMI编码主程序.docx_第2页
第2页 / 共12页
AMI编码主程序.docx_第3页
第3页 / 共12页
AMI编码主程序.docx_第4页
第4页 / 共12页
AMI编码主程序.docx_第5页
第5页 / 共12页
AMI编码主程序.docx_第6页
第6页 / 共12页
AMI编码主程序.docx_第7页
第7页 / 共12页
AMI编码主程序.docx_第8页
第8页 / 共12页
AMI编码主程序.docx_第9页
第9页 / 共12页
AMI编码主程序.docx_第10页
第10页 / 共12页
AMI编码主程序.docx_第11页
第11页 / 共12页
AMI编码主程序.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

AMI编码主程序.docx

《AMI编码主程序.docx》由会员分享,可在线阅读,更多相关《AMI编码主程序.docx(12页珍藏版)》请在冰点文库上搜索。

AMI编码主程序.docx

AMI编码主程序

AMI编码主程序:

functiony=AMI(x,samp)

last_one=-1;

fori=1:

length(x)

ifx(i)==1

forj=1:

samp/2

y((2*i-2)*samp/2+j)=-last_one;

y((2*i-1)*samp/2+j)=0;

end

last_one=-last_one;

else

forj=1:

samp

y((i-1)*samp+j)=0;

end

end

end

y=[y,x(i)];

曼彻斯特编码主程序:

#include

main()

{

inti,j;

chara[10],b[20];

cout<<"首先进行曼彻斯特编码:

"<

cout<<"请输入二进制数据流:

"<

for(j=0;j<10;j++)

{

cin>>a[j];

}

for(i=0;i<10;i++)

{

if(a[i]=='0'){b[2*i]='0';b[2*i+1]='1';}

if(a[i]!

='0'){b[2*i]='1';b[2*i+1]='0';}

}

cout<<"曼彻斯特码编码结果为:

"<

for(i=0;i<20;i++)

{

cout<

}

cout<

//下面进行曼彻斯特译码

charc[20],d[10];

cout<<"下面进行曼彻斯特译码:

"<

cout<<"请输入偶数个二进制数据流:

"<

for(i=0;i<20;i++)

{

cin>>c[i];

}

for(i=0;i<10;i++)

{

if((c[2*i]=='0')&&(c[2*i+1]=='1'))d[i]='0';

elsed[i]='1';

}

for(i=0;i<10;i++)

{

cout<

}

cout<

}

运行结果:

费诺编码主程序:

functionc=fano(p)

%p=[0.250.250.200.150.100.05]

%c=fano(p)

n=size(p,2);%已经编码完成

ifn==1

c=cell(1,1);

c{1}='';

return

end

[p,index]=sort(p);%按概率排序

p=fliplr(p);

total=sum(p);%总概率

acc=0;%累积概率

flag=0;%是否到达尾部的标志

fori=1:

n-1

newacc=acc+p(i);

ifabs(total-2*newacc)>=abs(total-2*acc)

flag=1;

break;

end

acc=newacc;

end

if~flag 

i=n;

end

split=i;%从分界点对两边的码递归做fano

c1=fano(p(1:

split-1));

c2=fano(p(split:

n));

c=cell(1,n);%添加前缀0,1

fori=1:

split-1 

c{i}=strcat('0',c1{i});

end

fori=split:

n

c{i}=strcat('1',c2{i-split+1});

end%将顺序调整回去

c=fliplr(c);

c(index)=c;

窗函数主程序框图如下所示:

窗函数法设计FIR数字滤波器主程序:

b=1;

closeall;

i=0;

while(b);

temp=menu('选择窗函数长度N','N=10','N=15','N=20','N=25','N=30','N=33','N=35','N=40','N=45','N=50','N=55','N=60','N=64');

menu1=[10,15,20,25,30,33,35,40,45,50,55,60,64];

N=menu1(temp);

temp=menu('选择逼近理想低通滤波器截止频率Wc','Wc=pi/4','Wc=pi/2','Wc=3*pi/4','Wc=pi','Wc=0.5','Wc=1.0','Wc=1.5','Wc=2.0','Wc=2.5','Wc=3.0');

menu2=[pi/4,pi/2,3*pi/4,pi,0.5,1,1.5,2,2.5,3];

a=(N-1)/2;

w=menu2(temp);

n=[0:

(N-1)];

hd=sin(w*(n-a))/((n-a)*pi);%得到理想低通滤波器

k=menu('请选择窗口类型:

','boxcar','hamming','hanning','blackman');

ifk==1

B=boxcar(N);

string=['Boxcar','N=',num2str(N)];

elseifk==2

B=hamming(N);

string=['Hamming','N=',num2str(N)];

elseifk==3

B=hanning(N);

string=['Hanning','N=',num2str(N)];

elseifk==4

B=blackman(N);

string=['Blackman','N=',num2str(N)];

end

end

end

end

h=hd.*(B)';%得到FIR数字滤波器

[H,m]=freqz(h,[1],1024,'whole');%求其频率响应

mag=abs(H);%得到幅值

db=20*log10((mag+eps)/max(mag));

pha=angle(H);%得到相位

i=i+1;

figure(i)

subplot(2,2,1);

n=0:

N-1;

stem(n,h,'.');

axis([0,N-1,-0.1,0.3]);

holdon;

n=0:

N-1;

x=zeros(N);

plot(n,x,'-');

xlabel('n');

ylabel('h(n)');

title('实际低通滤波器的h(n)');

text((0.3*N),0.27,string);

holdoff;

subplot(2,2,2);

plot(m/pi,db);

axis([0,1,-100,0]);

xlabel('w/pi');

ylabel('dB');

title('衰减特性(dB)');

grid;

subplot(2,2,3);

plot(m,pha);

holdon;

n=0:

7;

x=zeros(8);

plot(n,x,'-');

title('相频特性');

xlabel('频率(rad)');

ylabel('相位(rad)');

axis([0,3.15,-4,4]);

subplot(2,2,4);

plot(m,mag);

title('频率特性');

xlabel('频率W(rad)');

ylabel('幅值');

axis([0,3.15,0,0.5]);

text(0.9,1.2,string);

b=menu('DoYouwantToContinue?

','Yes','No');

ifb==2

b=0;

end

end

temp=menu('CloseAllFigure?

','Yes','No');

iftemp==1

closeall

End

运行结果:

矩形窗

汉宁窗:

海明窗:

布莱克曼窗:

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

当前位置:首页 > 解决方案 > 学习计划

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

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