内蒙古工业大学 数字信号处理实验报告通信专业.docx

上传人:b****5 文档编号:30047287 上传时间:2023-08-04 格式:DOCX 页数:24 大小:542.86KB
下载 相关 举报
内蒙古工业大学 数字信号处理实验报告通信专业.docx_第1页
第1页 / 共24页
内蒙古工业大学 数字信号处理实验报告通信专业.docx_第2页
第2页 / 共24页
内蒙古工业大学 数字信号处理实验报告通信专业.docx_第3页
第3页 / 共24页
内蒙古工业大学 数字信号处理实验报告通信专业.docx_第4页
第4页 / 共24页
内蒙古工业大学 数字信号处理实验报告通信专业.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

内蒙古工业大学 数字信号处理实验报告通信专业.docx

《内蒙古工业大学 数字信号处理实验报告通信专业.docx》由会员分享,可在线阅读,更多相关《内蒙古工业大学 数字信号处理实验报告通信专业.docx(24页珍藏版)》请在冰豆网上搜索。

内蒙古工业大学 数字信号处理实验报告通信专业.docx

内蒙古工业大学数字信号处理实验报告通信专业

实验一常见离散信号的MATLAB产生和图形显示

离散系统的时域分析

线性卷积与循环卷积的计算

一、实验目的

1)、加深对常用离散信号的理解;

2)、熟悉并掌握离散系统的差分方程表示法;

3)、加深对冲激响应和卷积分析方法的理解。

4)、进一步加深对线性卷积的理解和分析能力并掌握线性卷积与循环卷积软件实现的方法,并验证二者之间的关系

二、实验原理

常见离散信号的MATLAB产生和图形显示

1.单位抽样序列

在MATLAB中可以利用zeros()函数实现。

x=[1,zeros(1,N−1)];或x=zeros(1,N);X

(1)=1;

2.单位阶跃序列

在MATLAB中可以利用ones()函数实现。

x=ones(1,N);

3.正弦序列

在MATLAB中:

n=0:

N-1

x=A*sin(2*pi*f*n/fs+fai)

4.复正弦序列x(n)=A*

在MATLAB中

5.实指数序列

在MATLAB中

离散系统的时域分析

离散系统

Y[n]

x[n]

Discrete-time

systme

其输入、输出关系可用以下差分方程描述:

则系统响应为如下的卷积计算式:

y[n]=x[n]*h[n]=

x[m]h[nm]

当dk=0,=1,2,...时,h[n]是有限长度的(n:

[0,M]),称系统为FIR系统;反之,称系统为IIR系统。

三、实验内容及程序及结果分析

常见离散信号的MATLAB产生和图形显示

编制程序产生以下几种信号(长度可输入确定),并绘出其图形。

1)、产生64点的单位抽样序列δ(n)、64点并移位20位的单位抽样序列δ(n-20)及任意序列f(n)=8.0δ(n)+3.4δ(n-1)+1.8δ(n-2)+5.6δ(n-3)+2.9δ(n-4)+0.7δ(n-5)。

2)、产生幅度A=3,频率f=100,初始相位ϕ=1.2,点数为32点的正弦序列。

3)、产生幅度A=3,角频率ω=314,点数为32点的复正弦序列。

4)、产生幅度A=3,a=0.7,点数为32点的实指数序列。

实验程序及结果

Matlab源程序:

N=64;

x=[1,zeros(1,N-1)]

k=20;

y=zeros(1,N);

y(k)=1

subplot(2,1,1)

stem(x)

xlabel('dt(n)')

subplot(2,1,2)

stem(y)

xlabel('dt(n-20)')

 

 

z=zeros(1,N);

z

(1)=8;

z

(2)=3.4;

z(3)=1.8;

z(4)=5.6;

z(5)=2.9;

z(6)=0.7;

disp('f(n)=')

disp(z)

t=0:

31;

A=3;

f=100;

fs=10*f;

p=1.2;

x1=A*cos(2*pi*f*t/fs+p);

stem(x1)

xlabel('正弦序列')

n=0:

31;

x=3*exp(j*314*n)

figure

(1)

stem(n,x,'r')

a=0.7;

g=A*a.^t;

xlabel('实指数序列')

stem(g)

离散系统的时域分析

(1)编制程序求解下列两个系统的单位冲激响应和阶跃响应,并绘出其图形。

要求分别用filter、conv、impz三种函数完成。

y[n]+0.75y[n−1]+0.125y[n−2]=x[n]−x[n−1]

y[n]=0.25{x[n−1]+x[n−2]+x[n−3]+x[n−4]}

给出理论计算结果和程序计算结果并讨论。

Matlab源程序:

b=input('分子系数=');

a=input('分母系数=');

c=impz(b,a)%求系统的冲激响应

subplot(3,1,1)

stem(c)

ylabel('impz')

x=[1,zeros(1,length(c)-1)];

x1=x;

x2=ones(1,length(c));%生成长度和c的长度相同的阶跃x1

y=filter(b,a,x1)%用filter函数求系统的冲击响应

subplot(3,1,2)

stem(y)

ylabel('filter')

z=conv(x,c)%用卷积方法求系统冲激响应

subplot(3,1,3)

stem(z)

ylabel('conv')

xlabel('冲激响应')

figure

y1=filter(b,a,x2)%用filter函数求系统的冲击响应

subplot(2,1,1)

stem(y1)

ylabel('filter')

z1=conv(x2,c)%用卷积方法求系统冲激响应

subplot(2,1,2)

stem(z1)

ylabel('conv')

xlabel('阶跃响应')

b=[1,-1];

a=[1,0.75,0.125]

分子系数=[0.25,0.25,0.25,0.25]

分母系数=[1]

线性卷积与循环卷积的计算

已知两个有限长序列

x(n)=δ(n)+2δ(n−1)+3δ(n−2)+4δ(n−3)+5δ(n−4)

H(N)=δ(n)+2δ(n−1)+δ(n−2)+2δ(n−3)

(1)x(n)

h(n)

(2)x(n)

h(n)(3)x(n)

h(n)(4)x(n)

h(n)

(2)编制一个计算两个序列线性卷积的通用程序,计算x(n)*h(n)。

(3)编制一个计算循环卷积的通用程序,计算上述4种情况下两个序列x(n)与

h(n)的循环卷积。

Matlab程序:

functionyc=circonv(x1,x2,N)

%定义圆周卷积函数;x1,x2为输入序列;N为圆周卷积的阶数;yc为输出

iflength(x1)>N

error('N不能小于x1的长度')

end

iflength(x2)>N

error('N不能小于x2的长度')

end

%保证圆周卷积的长度大于两个序列的长度

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

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

%在x1后补零使得补零后序列的长度为N

n=[0:

1:

N-1];

x2=x2(mod(-n,N)+1);%生成序列为原序列x2的圆周反转序列

H=zeros(N,N);

forn=1:

1:

N

H(n,:

)=cirshiftd(x2,n-1,N);

end

%生成N行N列矩阵其中每行都是上一行的圆周右移1位

yc=x1*H';

functiony=cirshiftd(x,m,N)

%定义圆周移位函数

%y为移位后的序列

%m为右移的位数

%N为序列的阶数

iflength(x)>N

error('N的长度不能小于输入序列的长度')

end

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

n=[0:

1:

N-1];

y=x(mod(n-m,N)+1);

xn=input('x(n)=');

hn=input('h(n)=');

N=input('N=');

y1=conv(xn,hn);

y2=circonv(xn,hn,N);

a1=max(y1);

a2=max(y2);

n1=[0:

1:

length(y1)-1];

n2=[0:

1:

length(y2)-1];

subplot(2,1,1)

stem(n1,y1)

xlabel('线性卷积')

axis([0,max(length(y1),length(y2))-1,0,max(a1,a2)]);

subplot(2,1,2)

stem(n2,y2)

xlabel('圆周卷积')

axis([0,max(length(y1),length(y2))-1,0,max(a1,a2)]);

x(n)=[1,2,3,4,5]

h(n)=>>[1,2,1,2]

N=>>5

 

实验二应用快速离散傅里叶变换对信号进行频谱分析

离散系统的变换域分析

一、实验目的

(1)通过这一实验,能够熟练掌握快速离散傅里叶变换(FFT)的原理及其用

FFT进行频谱分析的基本方法。

(2)在通过计算机上用软件实现FFT及信号的频谱分析。

(3)通过实验对离散傅里叶变换的主要性质及FFT在数字信号处理中的重要

作用有进一步的了解。

(4)熟悉对离散系统的频率响应分析方法;

(5)加深对零、极点分布的概念理解

二、实验原理与方法

应用快速离散傅里叶变换对信号进行频谱分析

(1)离散傅里叶变换(DFT)及其主要性质

DFT表示离散信号的离散频谱,DFT的主要性质中有奇偶对称特性,虚实

特性等。

(2)利用DFT对信号进行频谱分析

DFT的重要应用之一是对时域连续信号的频谱进行分析,称为傅里叶分析,

时域连续信号离散傅里叶分析的基本步骤如图4.1所示。

图4.1时域连续信号离散傅里叶分析的处理步骤

其中消混叠低通滤波器LPF(预滤波器)的引入,是为了消除或减少时域连续信号转换成序列时可能出现的频谱混叠的影响。

实际工作中,时域离散信号

x(n)的时宽是很长的甚至是无限长的(例如语音或音乐信号)。

由于DFT的需要,

必须把x(n)限制在一定的时间间隔之内,即进行数据截断。

数据的截断相当于加

窗处理。

因此,在计算x(n)的DFT之前,用一个时域有限的窗函数w(n)加到x(n)

上是非常必要的。

(3)快速离散傅里叶变换(FFT)

快速离散傅里叶变换是计算离散傅里叶变换的一种快速算法,为了提高运算

速度,FFT将DFT的计算逐次分解成较小点数的DFT。

按时间抽取

(Decimation-In-Time(DIT)FFT算法把输入序列x(n)按其n值为偶数或是奇数分

解成越来越短的序列。

按频域抽取(Decimation-In-Frequency(DIF)FFT算法是把

输出序列X(k)按其k值是偶数或是奇数来分解成越来越短的序列。

离散系统的变换域分析

三、实验内容及程序运行结果:

应用快速离散傅里叶变换对信号进行频谱分析

上机独立调试,通过程序,可选择下面列出的序列中的3-4种,并取N为不同的2的幂次方的情况进行实验,并打印出v(k)或V(e)

的值,作出|V(k)|或|V(e

)|的曲线。

本实验中的五种输入序列。

1)实数数序列

2)复指数序列

3)周期为N的正弦序列

4)周期为N的余弦序列

5)复合函数列

Matlab源程序:

N=input('puttheN=');

n=0:

N-1;

%xn=3*(0.9+i*0.3).^n;

%xn=1.08.^n;

%xn=sin(2*pi*n/N);

%xn=cos(2*pi*n/N);

xn=0.9*sin(2*pi*n/N)+06*sin(2*pi*n*3/N)

xk=fft(xn,N)

mxk=abs(xk);

pxk=angle(xk);

subplot(2,1,1)

plot(n,xn)

xlabel('n');ylabel('x(n)');

title('x(n)');

subplot(2,2,3)

k=0:

length(mxk)-1;

stem(k,mxk,'.');

xlabel('k');ylabel('mxk')

title('|x(k)|');

subplot(2,2,4)

k=0:

length(pxk)-1;

stem(k,pxk,'.');

xlabel('k');ylabel('pxk')

title('phasex(k)');

puttheN=100

离散系统的变换域分析

(1)求系统

的零、极点和幅度频率响应和相位响应。

编程实现系统参数输入,绘出幅度频率响应和相位响应曲线和零、极点分布图。

(2)在MATLAB中,熟悉函数tf2zp、zplane、freqz、residuez、zp2sos的使用,

其中:

[z,p,K]=tf2zp(num,den)求得有理分式形式的系统转移函数的零、

极点;zplane(z,p)绘制零、极点分布图;h=freqz(num,den,w)求系统的单

位频率响应;[r,p,k]=residuez(num,den)完成部分分式展开计算;sos=zp2sos

(z,p,K)完成将高阶系统分解为2阶系统的串联。

Matlab源程序:

b=[0.0528,0.0797,0.1295,0.1295,0.797,0.0528];

a=[1,-1.8107,2.4947,-1.8801,0.9537,-0.2336];

[z,p,k]=tf2zp(b,a);

disp('零点');disp(z)

disp('极点');disp(p)

zplane(z,p);

w=0:

pi/244:

2*pi;

figure

h=freqz(b,a,w);

m=abs(h);

p=angle(h);

subplot(2,1,1)

plot(w,m);

xlabel('w');ylabel('m')

title('幅度响应')

subplot(2,1,2)

plot(w,p);

xlabel('w');ylabel('p')

title('相位响应')

零点

-1.5870+1.4470i

-1.5870-1.4470i

0.8657+1.5779i

0.8657-1.5779i

-0.0669

极点

0.2788+0.8973i

0.2788-0.8973i

0.3811+0.6274i

0.3811-0.6274i

0.4910

 

实验三用双线性变换法设计IIR滤波器

用窗口法设计FIR滤波器

一、实验目的

(1)、熟悉模拟Batterworth滤波器设计和用双线性变换法设计数字IIR滤波器的方法。

(2)、了解一个实际滤波器设计过程,加深掌握用窗口法设计FIR滤波器的原理和窗函数对滤波器性能的影响。

二、实验原理

用双线性变换法设计IIR滤波器

利用双线性变换设计IIR滤波器,首先要设计出满足指标要求的模拟滤波器的传递函数H(s)a,然后由H(s)a通过双线性变换可得所要设计的IIR滤波器的系统函数H(z)。

如果给定的指标为数字滤波器的指标,则首先要转换成模拟域指

标。

(1)低通数字滤波器设计

数字域与模拟域关系

利用双线性变换设计IIR滤波器,首先要设计出满足指标要求的模拟滤波器的

传递函数H(s)a,然后由H(s)a通过双线性变换可得所要设计的IIR滤波器的系

统函数H(z)。

如果给定的指标为数字滤波器的指标,则首先要转换成模拟域指

标。

用窗口法设计FIR滤波器

直接的一种方法是从单位取样响应序列h(n)着手,使h(n)逼近理想的单位取样响应h(n)d。

这种对理想单位取样响应加窗的处理对频率响应会产

生以下三点影响:

(1)使理想特性不连续的边沿加宽,形成一过渡带,过渡带的宽度取决于窗口

频谱的主瓣宽度。

(2)在过渡带两旁产生肩峰和余振,它们取决于窗口频谱的旁瓣;旁瓣越多,

余振也越多;旁瓣相对值越大,肩峰则越强。

(3)增加截取长度N,只能缩小窗口频谱的主瓣宽度而不能改变旁瓣的相对

值;旁瓣与主瓣的相对关系只决定于窗口函灵敏的形状。

因此增加N,只能

相对应减小过渡带宽。

而不能改变肩峰值。

肩峰值的大小直接决定通带内的

平稳和阻带的衰减,对滤波器性能有很大关系。

例如矩形窗的情况下,肩峰

达8.95%,致使阻带最小衰减只有21分贝,这在工程上往往是不够的。

怎样

才能改善阻带的衰减特性呢?

只能从改善窗口函数的形状上找出路,所以希

望的窗口频谱中应该减少旁瓣,使能量集中在主瓣,这样可以减少肩峰和余

振,提高阻带的衰减。

而且要求主瓣宽度尽量窄,以获得较陡的过渡带,然

而这两个要求总不能兼得,往往需要用增加主瓣宽度带换取决瓣的抑制,于

是提出了海明窗、凯宽窗、切比雪夫窗等窗口函数。

三、实验内容及要求

用双线性变换法设计IIR滤波器

1)编写用双线性变换法设计Batterworth低通IIR数字滤波器的程序,要求

通带内频率低于0.2πrad时,容许幅度误差在1dB之内,频率在0.3πrad到

πrad之间的阻带衰减大与10dB。

其中要求参数ωp,ωs,ap和as可由键盘输入。

(2)以pi/64为采样间隔,在屏幕上打印出数字滤波器的频率区间[0,π]上的幅频响应特性由线(H(ejω))。

(3)在屏幕上打印出H(z)的分子,分母多项式系数

Matlab源程序:

wp=0.2*pi;

ws=0.8*pi;

Rp=1;

Rs=10;

T=pi/64;

fs=1/T;

Wp=1/T*tan(wp/2);

Ws=1/T*tan(ws/2);

[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s');

[z,p,k]=buttap(N);

[num,den]=zp2tf(z,p,k);

[b,a]=lp2lp(num,den,Wn);

[bz,az]=bilinear(b,a,fs);

disp('分子系数')

disp(bz)

disp('分母系数')

disp(az)

[H,W]=freqz(bz,az);

plot(W,abs(H));

grid

ylabel('幅度')

xlabel('频率/rad')

用窗口法设计FIR滤波器

用改进余弦窗设计一个FIR线性相应相位低通数字滤波器,已知

w=0.5,N=21cπ。

编写调试程序,要求在幕幕上显示出单位脉冲响应h(n)的数值,画出其幅度

响应H(ejw)的曲线。

wc=0.5*pi;

N=21;

Wn=wc;

b=fir1(N,Wn/pi,hanning(N+1));

freqz(b,1,512)

实验心得体会:

 通过这三次实验我熟悉掌握了基本序列在matlab中的表示方法和求系统响应的方法。

在时域中,已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应。

系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。

系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应,或者系统的单位脉冲响应满足绝对可和的条件。

通过实验可以得出系统的稳定性由其差分方程的系数决定。

此外学习了用FFT对连续信号和时域离散信号进行谱分析的方法,了解了可能出现的分析误差及其原因。

周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。

如果不知道信号周期,可以尽量选择信号的观察时间长一些。

对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。

如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。

误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。

通过第三次实验掌握了用双线性变换法设计IIR滤波器和窗函数法设计FIR数字滤波器的原理和方法。

了解掌握了FIR滤波器的快速卷积实现原理。

学会了调用MATLAB函数设计与实现IIR、FIR滤波器。

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1