数字信号编码程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);