数字信号编码程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计任务书

一、设计目的

1.通过本设计,使学生综合运用《通信原理》、《数字信号处理》、《信息论与编码》、《C语

言》、《MATLAB》等课程的知识,为以后从事通信相关工作奠定一定的基础。

2.掌握用编程语言编写一个较完整的实用程序。

3.实现编码与解码的全过程。

二、设计内容

1.至少3种基带传输常用编码与解码方法的仿真程序设计。

2.检错编码与加密编码的仿真程序设计。

3.用FFT对离散信号进行谱分析

4.用窗函数法设计FIR数字滤波器

注:1、2可任选其一完成;3、4可任选其一完成。

三、设计要求

可以采用任意编程语言编写代码实现,但不能采用直接调用库函数或第三方函数方法; 完成程序流程设计; 编写代码实现; 运行,测试并写出结果分析。

四、报告要求

1.要求使用A4纸打印封面、设计任务书、原理图、程序清单,其余内容用A4纸手写,要

求字迹工整、格式正确。

2.课程设计报告一般应包含如下部分:

程序流程及其实现

实验结果及其分析

设计过程中的主要难点(自己遇到的)及解决思路和办法、收获、体会和建议。

教师评语:

附1

AMI码流程图

%AMIÂë

function y=AMI(x,samp)

last_one=-1;

for i=1:length(x)

if x(i)==1

for j=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

for j=1:samp

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

end

end

end

y=[y,x(i)];

附2.

曼彻斯特码的流程图曼彻斯特码编码如下:

#include"iostream.h"

main()

{

int i,j;

char a[5],b[10];

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

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

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

{

cin>>a[j];

}

for(i=0;i<5;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<10;i++)

{

cout<

}

cout<

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

char c[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';

else d[i]='1';

}

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

{

cout<

}

cout<

附3

费诺编码流程图如下:

Matable程序实现如下:

fu nction c = fano(p)

% p = [0.25 0.25 0.20 0.15 0.10 0.05] % c = fano(p)

n = size(p , 2) ;

%已经编码完成

if n == 1

c = cell(1,1);

c{1} = ' ' ;

return

end

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

p = fliplr(p) ;

total = sum(p) ;%总概率

acc = 0 ;%累积概率

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

for i = 1:n-1

newacc = acc + p(i) ;

if abs(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

for i = 1:split-1

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

end

for i = split:n

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

end

%将顺序调整回去

c = fliplr(c) ;

c(index) = c ;

附4

FFT参考子程序

%%%用FFT作谱分析实验

flag1=input('输入信号序号:');

N=input('N=');

while flag1==1

n=1:1:N

x=[1,1,1,1];

X=fft(x,N);

figure(1);

subplot(2,1,1);

相关文档
最新文档