DSP实验报告

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

数字信号处理课程实验报告

题目:P30-2-6和P63-3-22-d

信道编码

专业:xxx

学号:xxx

姓名:xx

一、书上习题运算

一、实验内容

2.6一个特定的线性和时不变系统,描述它的差分方程如下:y(n)+0.1y(n-1)-0.06y(n-2) = x(n)-2x(n-1)求系统脉冲响应的前10个样本。

如果此系统输入为x(n)=[5+3cos(0.2πn)+4sin(0.6πn)]μ(n),在0≤n≤20求出y(n)的响应。

3.22计算下列序列的N点循环卷积z(n)。

D x1(n)=nR N(n);x2=(N-n)R N(n);N=10

二、实验程序代码

2.6程序:

function[x,n]=impseq(np,ns,nf)

if ns>np|ns>nf|np>nf

error('输入位置参数不满足ns<=np<=nf')

else n=[ns:nf];

x=[(n-np)==0];

end

a=[1,0.1,0.06];b=[1-2];

x=impseq(0,0,20);

h=filter(b,a,x);

n=0:20;

x=5+3*cos(0.2*pi*n)+4*sin(0.6*pi*n);

y=conv(h,x)

stem(y)

3.22程序:

function y=circonvt(x1,x2,N)

x1=[x1,zeros(1,N-length(x1))];

x2=[x2,zeros(1,N-length(x2))];

m=[0:N-1];

x2m=x2(mod(-m,N)+1);

H=toeplitz(x2m,[0,x2(2:N)]);

y=x1*H;

n=0:9;

x1=n;

x2=10-n;

y=circonvt(x1,x2,10)

stem(y)

三、实验结果

2.6

3.22

四、总结

通过这次实验,我掌握了时域中系统的基本运算,对脉冲响应有了更深刻的了解,知道了可以用差分方程来描述线性时不变系统,知道了线性时不变系统的输出等于输入序列和该系统的脉冲响应的卷积,并顺利用matlab写出了相关程序并进行了仿真,总得来说,这次实验学到了很多。

二、数字信号处理应用实验一、实验内容

信道编码:对要在信道中传送的数字信号进行的纠、检错编码。

二、实验程序代码

各个子程序及其实现的基本功能。

通信过程的每个模块写成子程序函数:

Channelcoding 为信道编码函数

Channeldecoding 为信道解码纠错子函数

Interwaving 为交积子函数

Deinterwaving 为解交积子函数

addfade为向信道加入衰落参数的子函数

awgn 为库函数,向信源加高斯白噪声

pskmod 为库函数,用于信号调制,输出为复数

pskdemod 为库函数,用于信号解调

信道编码子程序:

sym为编码码流,

G为生成矩阵,

k为编码方式的长度

function bitcoded=channelcoding(sym,G,k)

A=vec2mat(sym,k);

U=A*G;

U=mod(U,2);

bitcoded=reshape(U',1,[]);

信道解码子程序:

function bitdecoded=channeldecoding(recode,Etab,Smatrix,H,n,k)

% 前向纠错函数,实现纠错功能

% bidecoded为纠错后返回的比特流

% recode为输入的比特流

% E为错误图样表,S为对应的伴随式表

% H为监督矩阵,n,k为码的类型,如(7,4)码,n=7,k=4

row=length(recode)/n; %行数

E=zeros(row,n); %错误图样

RM=zeros(row,n); %纠错之后的矩阵

R=vec2mat(recode,n);

S=R*H'; %伴随矩阵

S=mod(S,2);

for i=1:row

for j=1:2^(n-k) %查表纠错

if(S(i,:)==Smatrix(j,:))

E(i,:)=Etab(j,:);

RM(i,:)=R(i,:)+E(i,:);

RM(i,:)=mod(RM(i,:),2);

break;

end

end

end

bitdecoded=reshape(RM',1,[]); %转化为比特流

交织子程序:

function retbit=interweaving(bitstream,row,col)

%功能:实现对输入比特的交积

% retbit为交积后返回的比特流向量

% bitstream 为需要交积的比特流向量

% row 和 col为交积器的行和列,

% 通过改变col就可以改变交积深度

retbit=zeros(1,length(bitstream));

bitarr=vec2mat(bitstream,row);

bitarr=bitarr';

for i=1:length(bitstream)/(row*col)

temp=bitarr(:,((i-1)*col+1):i*col);

retbit(1,((i-1)*(row*col)+1):(i*(row*col)))=reshape(temp',1,[]);

end

解交织子程序:

function retbits=deinterweaving(bitstream,row,col)

%功能:实现对输入比特的解交积%rebits为解交积后返回的比特流

% bitstream输入的比特流

%row 和col为交积器的行和列,通过改变col就可以改变交积长度retbits=zeros(1,length(bitstream));

bitarr=vec2mat(bitstream,col);

for i=1:length(bitstream)/(row*col)

temp=bitarr((i-1)*row+1:i*row,:);

retbits(1,(i-1)*row*col+1:i*row*col)=reshape(temp,1,[]);

end

信道衰落子程序:

function code=addfade(modcode,Tf,isperiod,isfade)

%功能:向传输序列modcode叠加衰落性信道的衰落参数k(t)

%code为加入衰减参数之后返回的序列。

% modcode为调制之后的序列

% Tf 为衰落时间,以ms为单位,小于10ms,

% Tf=1,表示衰落1ms % isperiod 周期衰落和一次性衰落的标志,% isperiod=1表示周期性衰落,0表示一次性衰落

% isfade表示是否存在衰落,1存在,0不存在衰落直接返回modcode if(isfade==1)

相关文档
最新文档