当前位置:文档之家› 数字信号处理实验讲义

数字信号处理实验讲义

数字信号处理实验讲义
数字信号处理实验讲义

实验一 序列的产生及绘图

一、实验目的

1.熟悉信号处理软件MATLAB 的使用。 2.离散信号的基本运算实现。

3.了解基本序列及复杂序列的产生方法。 4.运用卷积方法观察系统的时域特性。 5.掌握线性时不变系统的频域表示方法。 二、实验内容 1.熟悉扩展函数 2.运行例题程序 3.编程实现下列内容

(1)利用扩展函数产生序列并画图

(a) )4()2(*2)(--+=n n n x δδ -5<=n<=5

(b) )04.0cos()(n n x π=和)(2.0)04.0cos()(n w n n y +=π 0<=n<=50

w(n)为白噪声 函数为 w=randn(size(n)) (2)设线性移不变系统的抽样响应为 )()9.0()(n u n h n =

输入序列为 )10()()(--=n u n u n x 求系统输出 y(n)并画图 提示: 输出为输入和抽样响应的卷积

三、实验报告要求

1.记录例题程序的实验结果、图形。

2.写出自己编写的程序并记录结果、图形。

注:以下程序中所有以 % 开头的行均为注释, 所有汉字均为注释,%后的内容不用写入程序 %如果要了解哪个函数的应用方法请用help 命令 如help zreos

%本软件中 * 表示乘法, 卷积用函数 conv 或修改后的卷积 conv_m %以下是7个扩展函数

%扩展函数1~7的用法和该软件自带函数用法一致,即在调用时要将实参代入 %例:应用扩展函数3需要输入x1(n),x2(n)的值。 %在Command Window (命令窗口)中输入 % n1=1:5; % n2=2:6;

% x1=[1 3 5 7 9]; % x2=[2 4 6 8 10];

% [y,n]=sigadd(x1,n1,x2,n2) 即可得两序列相加的结果

%7个扩展函数要分别存到不同的文件中,并且文件名要和该扩展函数的函数名一致 %如产生单位取样序列的函数所存文件的文件名必须为 impseq %1.单位取样序列 x(n)=delta(n-n0) 要求n1<=n0<=n2 function[x,n]=impseq(n0,n1,n2) n=[n1:n2]; x=[(n-n0)==0];

%2.单位阶跃序列 x(n)=u(n-n0) 要求n1<=n0<=n2 function[x,n]=stepseq(n0,n1,n2) n=[n1:n2]; x=[(n-n0)>=0];

%3.信号加 y(n)=x1(n)+x2(n) %find 函数:找出非零元素的索引号

%x1:第一个序列的值,n1:序列x1的索引号 %x2:第二个序列的值,n2:序列x2的索引号 function[y,n]=sigadd(x1,n1,x2,n2)

n=min(min(n1),min(n2)):max(max(n1),max(n2));

y1=zeros(1,length(n)); y2=y1;

y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; y=y1+y2;

%4.信号乘 y(n)=x1(n)*x2(n) function[y,n]=sigmult(x1,n1,x2,n2)

n=min(min(n1),min(n2)):max(max(n1),max(n2)); y1=zeros(1,length(n)); y2=y1;

y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; y=y1.*y2;

%5.移位 y(n)=x(n-n0)

function[y,n]=sigshift(x,m,n0) n=m+n0; y=x;

%6.翻褶 y(n)=x(-n)

function[y,n]=sigfold(x,n) y=fliplr(x); n=-fliplr(n);

%7.修改后的卷积(系统自带卷积函数(conv)只能得到输出值,而无法表示取值范围(n),修改后的卷 %积既给出了卷积值,也给出了它的取值范围.) function[y,ny]=conv_m(x,nx,h,nh) nyb=nx(1)+nh(1);

nye=nx(length(x))+nh(length(h)); ny=[nyb:nye]; y=conv(x,h);

%例1 序列的基本运算 nx1=1:5; nx2=2:6;

x1=[1 3 5 7 9]; x2=[2 4 6 8 10];

[y1,n1]=sigadd(x1,nx1,x2,nx2) %序列相加 [y2,n2]=sigmult(x1,nx1,x2,nx2) %序列相乘 n0=3;

[y3,n3]=sigshift(x1,nx1,n0) %序列移位,n0为移动的位数 [y4,n4]=sigfold(x2,nx2) %序列的翻褶 y5=sum(x1) %序列和 ∑==N

n n x y 1)( y6=prod(x1) %序列积 ∏==

N

n n x y 1)(

ex=sum(x1.*conj(x1)) %或 ex=sum(abs(x).^2);

%信号能量 ∑∑====

N

n N

n n x n x

n x Ex 1

21

*

|)(|)()(

%例2 产生序列并画图

%)]20()10([*10)]10()([*)()10(3.0---+--=--n u n u e n u n u n n x n 0<=n<=20

%subplot 函数: 将一个图形分为几个小区域,每次选择一个作为当前区域画图 % subplot(m,n,p) 将图形分为m 行, n 列的区域, p 为当前区域 %axis 函数:控制坐标系的刻度和形式 title 函数:图形标题 %xlabel 函数:X 轴标记 ylabel 函数:Y 轴标记 %stem 函数:画离散序列图 n=[0:20];

x1=n.*(stepseq(0,0,20)-stepseq(10,0,20));

x2=10*exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20)); x=x1+x2;

subplot(2,1,1);stem(n,x);

xlabel('n');ylabel('x(n)');axis([0,20,-1,11]);

%例3 产生复信号 n j e n x )3.01.0()(+-= -10<=n<=10 %并画出复序列的实部、虚部、幅值和相位离散图 figure(2);clf

n=[-10:10]; alpha=-0.1+0.3j; x=exp(alpha*n);

subplot(2,2,1);stem(n,real(x));title('real');xlabel('n') subplot(2,2,2);stem(n,imag(x));title('imag');xlabel('n') subplot(2,2,3);stem(n,abs(x));title('magtitude'); xlabel('n')

subplot(2,2,4);stem(n,(180/pi)*angle(x));title('phase'); xlabel('n')

%例4 线性时不变系统的频域表示 b=[0.2 0.1 ];

a=[1 -0.4 -0.5]; %系统函数的系数 i

N i i M

i i

i z a z

b z H -==-∑∑+=

1

01)(

h=impz(b,a); %系统的单位取样响应 figure(1)

stem(h) %画出单位取样响应 title('h(n)') figure(2)

fs=1000;

[H,f]=freqz(b,a,256,fs); %求出系统的频率响应 mag=abs(H); %幅度响应 ph=angle(H); %相位响应 ph=ph*180/pi;

subplot(2,1,1),plot(f,mag);grid %画出幅度响应 xlabel('frequency(Hz)'); ylabel('magnitude');

subplot(2,1,2);plot(f,ph);grid %画出相位响应 xlabel('frequency(Hz)'); ylabel('phase'); figure(3)

zr=roots(b) %求出系统的零点 pk=roots(a) %求出系统的极点

zplane(b,a); %zplane 函数画出零极点图

实验二 离散傅立叶变换及谱分析

一、 实验目的

1.掌握离散傅里叶变换的计算机实现方法。 2.检验实序列傅里叶变换的性质。 3.掌握计算序列的圆周卷积的方法。

4.熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解。

5.学习用DFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差,以便在实际中正确应用DFT 。 二、 实验内容

1.实现离散傅里叶变换。 2.计算序列圆周卷积。

3.计算实序列傅里叶变换并检验DFT 性质。

4.实现连续信号傅里叶变换以及由不同采样频率采样得到的离散信号的傅里叶变换。 5.实现补零序列的傅里叶变换。

6.实现高密度谱和高分辨率谱,并比较二者的不同。 三、 实验报告要求 见各程序要求

%以下为4个扩展函数

% (1)离散傅立叶变换 ∑-==1

)()(N k nk N W n x k X 采用矩阵相乘的方法

function [Xk]=dft(xn,N) n=[0:1:N-1]; k=[0:1:N-1];

WN=exp(-j*2*pi/N); nk=n'*k;

WNnk=WN.^(nk); Xk=xn*WNnk;

%(2)逆离散傅立叶变换 ∑-=-=

10

)(1

)(N k nk N W k X N

n x

function [xn]=idft(Xk,N) n=[0:1:N-1]; k=[0:1:N-1];

WN=exp(-j*2*pi/N); nk=n'*k;

WNnk=WN.^(-nk); xn=(Xk*WNnk)/N;

% (3) 实序列的分解

% 实序列可分解为共扼对称分量 ]x((-n))[x(n)*(1/2)xec N += % 和共扼反对称分量 ]x((-n))-[x(n)*(1/2)xoc N = function [xec,xoc]=circevod(x) N=length(x); n=0:(N-1);

xec=0.5*(x+x(mod(-n,N)+1)); %根据上面的公式计算,mod 函数为取余 xoc=0.5*(x-x(mod(-n,N)+1));

% (4) 序列的循环移位 N m n x n y ))(()(-= function y=cirshftt(x,m,N)

if length(x)>N

error('N mustbe >= the length of x') %要求移位周期大于信号长度

end

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

n=[0:1:N-1];

n=mod(n-m,N);

y=x(n+1);

%例1 本例检验实序列的性质DFT[xec(n)]=Re[X(k)] DFT[xoc(n)]=Im[X(k)] % 设 x(n)=10*(0.8).^n 0<=n<=10 将x(n)分解为共扼对称及共扼反对称部分%实验报告要求:(1)将实验结果画出(2)实验结果说明什么

n=0:10;

x=10*(0.8).^n;

[xec,xoc]=circevod(x);

subplot(2,1,1);stem(n,xec); %画出序列的共扼对称分量

title('Circular -even component')

xlabel('n');ylabel('xec(n)');axis([-0.5,10.5,-1,11])

subplot(2,1,2);stem(n,xoc); %画出序列的共扼反对称分量

title('Circular -odd component')

xlabel('n');ylabel('xoc(n)');axis([-0.5,10.5,-4,4])

figure(2)

X=dft(x,11); %求出序列的DFT

Xec=dft(xec,11); %求序列的共扼对称分量的DFT

Xoc=dft(xoc,11); %求序列的共扼反对称分量的DFT

subplot(2,2,1);stem(n,real(X));axis([-0.5,10.5,-5,50])

title('Real{DFT[x(n)]}');xlabel('k'); %画出序列DFT的实部

subplot(2,2,2);stem(n,imag(X));axis([-0.5,10.5,-20,20])

title('Imag{DFT[x(n)]}');xlabel('k'); %画出序列DFT的虚部

subplot(2,2,3);stem(n,Xec);axis([-0.5,10.5,-5,50])

title('DFT[xec(n)]');xlabel('k');

subplot(2,2,4);stem(n,imag(Xoc));axis([-0.5,10.5,-20,20])

title('DFT[xoc(n)]');xlabel('k');

% 例2 本例为计算序列的圆周卷积程序

% 运行之前应在命令窗口输入 x1,x2,N 的值

%实验报告要求:自己选择2个序列进行计算,将实验结果写出

if length(x1)>N

error('N must be >= the length of x1')

end

if length(x2)>N

error('N must be >= the length of x2')

end

x1=[x1 zeros(1,N-length(x1))]; %将x1,x2补0成为N长序列

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

m=[0:1:N-1];

x2=x2(mod(-m,N)+1); %该语句的功能是将序列翻褶,延拓,取主值序列

H=zeros(N,N);

for n=1:1:N %该for循环的功能是得到x2序列的循环移位矩阵

H(n,:)=cirshftt(x2,n-1,N); %和我们手工计算圆周卷积得到的表是一致的

end

y=x1*H' %用矩阵相乘的方法得到结果

% 例3 本例验证采样定理

%令||1000)(t a e t x -=,绘制其傅立叶变换)(Ωj X a 。用不同频率对其进行采样,分别画出离 %散时间傅立叶变换)(ωj e X 。已给出采样频率为kHz f s 5=时的的程序 %实验报告要求:(1)请写出kHz f s 1=时的程序

(2)将实验结果画出

(3)实验结果说明什么(采样频率不同结果有何不同)。

Dt=0.00005; %步长为0.00005s t=-0.005:Dt:0.005;

xa=exp(-1000*abs(t)); %取时间从-0.005s 到0.005s 这段模拟信号 Wmax=2*pi*2000; %信号最高频率为2π*2000 K=500; %频域正半轴取500个点进行计算 k=0:1:K;

W=k*Wmax/K; %K

W k max

*=Ω 求模拟角频率

Xa=xa*exp(-j*t'*W)*Dt; %计算连续时间傅立叶变换(利用矩阵运算实现) Xa=real(Xa); %取实部

W=[-fliplr(W),W(2:501)]; %将角频率范围扩展为从-到+ Xa=[fliplr(Xa),Xa(2:501)]; subplot(2,2,1);

plot(t*1000,xa); %画出模拟信号,横坐标为时间(毫秒),纵坐标为幅度 xlabel('time(millisecond)');ylabel('xa(t)'); title('anolog signal'); subplot(2,2,2);

plot(W/(2*pi*1000),Xa*1000); %画出连续时间傅立叶变换 xlabel('frequency(kHZ)'); %横坐标为频率(kHz ) ylabel('xa(jw)'); %纵坐标为幅度 title('FT');

%下面为采样频率5kHz 时的程序 Ts=0.0002; %采样间隔为s f s

0002.01

=

n=-25:1:25;

x=exp(-1000*abs(n*Ts)); %离散时间信号 K=500;k=0:1:K;w=pi*k/K; %w 为数字频率

X=x*exp(-j*n'*w); %计算离散时间傅立叶变换(序列的傅立叶变换) X=real(X);

w=[-fliplr(w),w(2:K+1)]; X=[fliplr(X),X(2:K+1)]; subplot(2,2,3);

stem(n*Ts*1000,x); %画出采样信号(离散时间信号) xlabel('time(millisecond)');

gtext('Ts=0.2ms'); %该语句可以将引号中的内容放置在figure 中的任何地方,只需 %将十字的中心放在想放置内容的地方,然后按鼠标即可。 ylabel('x1(n)');

title('discrete signal'); subplot(2,2,4);

plot(w/pi,X); %画出离散时间傅立叶变换 xlabel('frequency(radian)'); %横坐标为弧度 ylabel('x1(jw)');title('DTFT');

%例4 本例说明补零序列的离散傅立叶变换

%序列)()(5n R n x =,已给出序列的傅立叶变换程序和将原序列补零到10长序列的DFT

%实验报告要求: (1)编写将序列补零到20长后计算DFT 的程序

(2)将实验结果画出

(3)实验结果说明什么(即序列补零后进行DFT,频谱有何变化)

n=0:4;

x=[ones(1,5)]; %产生矩形序列 k=0:999;w=(pi/500)*k;

X=x*(exp(-j*pi/500)).^(n'*k); %计算离散时间傅立叶变换 Xe=abs(X); %取模

subplot(3,2,1);stem(n,x);ylabel('x(n)'); %画出矩形序列

subplot(3,2,2);plot(w/pi,Xe);ylabel('|X(ejw)|'); %画出离散时间傅立叶变换 N=10;x=[ones(1,5),zeros(1,N-5)]; %将原序列补零为10长序列 n=0:1:N-1;

X=dft(x,N); %进行DFT magX=abs(X);

k=(0:length(magX)'-1)*N/length(magX);

subplot(3,2,3);stem(n,x);ylabel('x(n)'); %画出补零序列 subplot(3,2,4);stem(k,magX); %画出DFT 结果 axis([0,10,0,5]);ylabel('|X(k)|');

%例5 本题说明高密度谱和高分辨率谱之间的区别,高密度谱是信号补零后得到的,虽然谱线相当 %密但是因为信号有效长度不变,所以其分辨率也不变,因此还是很难看出信号的频谱成分。高分辨 %率谱是将信号有效长度加长,因此分辨率提高,可以看出信号的成分。

%有一个序列为)5.0cos()35.0cos(2)(n n n x ππ+= (该序列周期计算可得40) %(1)下面给出有10个有效采样点序列的DFT 程序

%(2)请写出将第一问中的10长序列补零到40长,计算其DFT %(3)采样n=0:39,计算有40个有效采样点的序列的DFT

%实验报告要求: (1)请编写将有10个有效采样点的序列补零到40长后计算DFT 的程序

(2) 请编写计算有40个有效采样点的序列的DFT 的程序

(3) 将实验结果画出并分析实验结果说明什么

M=10; n=0:M-1;

x=2*cos(0.35*pi*n)+cos(0.5*pi*n);

subplot(2,1,1);stem(n,x);title('没有足够采样点的信号'); Y=dft(x,M);

k1=0:M-1;w1=2*pi/M*k1;

subplot(2,1,2);stem(w1/pi,abs(Y));title('信号的频谱');

实验三 快速傅立叶变换

一、实验目的

1.掌握fft 函数的用法。 2.了解FFT 的用途。 二、实验内容

1.利用FFT 进行信号检测。分析信号频谱所对应频率轴的数字频率和频率轴的频率范围。 2. 对例2,进一步增加截取长度和FFT 点数,如N 加大到256,观察信号频谱的变化,分析产生这一变化的原因。在截取长度不变的条件下改变采样频率,观察信号频谱的变化,分析产生这一变化的原因。

3. 对例3,加大噪声到2*randn(1,N)和8*randn(1,N),画出并比较不同噪声下时域波形和频谱。 4.比较DFT 和FFT 的运算时间。(计时函数 tic , toc)

5.对给定语音信号进行谱分析,写出采样频率,画出语音信号的波形及频谱,并分析语音信号的频率分布特点。

三、 实验报告要求

1.记录例题程序的实验结果、图形。

2.写出自己编写的程序并记录结果、图形。 3.对实验结果进行分析。

% fft 一维快速傅立叶变换函数

% 格式: y=fft(x) FFT 算法计算矢量x 的离散傅立叶变换,当x 为矩阵时,y 为矩阵x 的每一列 % 的FFT 。%当x 的长度为2的幂次方时,则fft 采用基2的FFT 算法,否则采用稍慢的混合基算法。 % y=fft(x,n) 实现n 点FFT 。当x 的长度小于n 时,fft 函数在x 的尾部补零,以构成n 点数据;% 当x 的长度大于n 时,fft 函数会截断序列x 。当x 为矩阵时,fft 函数按类似的方法处理列长度。 % ifft 一维快速傅立叶反变换

% 格式:y=ifft(x) 用于计算矢量x 的IFFT 。 % y=ifft(x,n) 计算n 点IFFT 。 %例1 求信号功率谱 t=0:0.001:0.6;

x=sin(2*pi*50*t)+sin(2*pi*120*t)+randn(1,length(t)); Y=fft(x,512); P=Y.*conj(Y)/512; f=1000*(0:255)/512; plot(f,P(1:256))

%例2 模拟信号)8cos(5)4sin(*2)(t t t x ππ+=,以n t 01.0= 10-≤≤N n 进行取样,求N 点DFT 的幅值谱

%N 分别为 (1) N=45 (2) N=50 (3) N=55 (4) N=60 。 subplot(2,2,1)

N=45;n=0:N-1;t=0.01*n; q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);

plot(q,abs(y));title('FFT N=45') subplot(2,2,2)

N=50;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);

plot(q,abs(y));title('FFT N=50') subplot(2,2,3)

N=55;n=0:N-1;t=0.01*n; q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);

plot(q,abs(y));title('FFT N=55') subplot(2,2,4)

N=60;n=0:N-1;t=0.01*n; q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);

plot(q,abs(y));title('FFT N=60')

%例3 参数同上,N 取64,并在信号中加入噪声w(t),比较有无噪声时的信号谱 %由结果可以看出这种噪声不影响信号检测 figure(2)

subplot(2,1,1)

N=64;n=0:N-1;t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N); plot(q,abs(y));title('FFT N=64') subplot(2,1,2)

N=64;n=0:N-1;t=0.01*n; q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t)+0.8*randn(1,N); y=fft(x,N); plot(q,abs(y));title('FFT N=64(with noise)')

实验四 IIR 滤波器设计

一、实验目的

1.熟悉由模拟滤波器转换为IIR 数字滤波器的原理与方法。 2.掌握数字滤波器的计算机仿真方法。 二、实验内容

1.用脉冲响应不变法设计巴特沃斯数字滤波器。 2.用双线性变换法设计切比雪夫数字滤波器。

3.用双线性变换法设计巴特沃斯数字滤波器。并将直接型结构转换成级联型结构。 4.比较分析两种不同方法设计的数字滤波器的频率特性的区别。

5.比较并分析变换前的模拟滤波器与变换后的数字滤波器的频率特性的区别,模拟滤波器的频率特性可以使用freqs()函数,注意模拟频率和数字频率之间的对应关系。 6.滤除心电图信号噪声。

人体心电图信号在测量过程中往往受到工业高频干扰,所以必须经过低通滤波处理后,才能作为判断心脏功能的有用信息。下面给出一实际心电图采样序列样本,其中存在高频干扰,用低通滤波器滤出其中的干扰成分。

X={ -4, -2, 0, -4, -6, -4, -2, -4, -6, -6, -4, -4, -6, -6, -2, 6, 12, 8, 0, -16, -38, -60, -84, -90, -66, -32, -4, -2, -4, 8, 12, 12, 10, 6, 6, 6, 4, 0, 0, 0, 0, 0, -2, -4, 0, 0, 0, -2, -2, 0, 0, -2, -2, -2, -2, 0 } 三、实验要求

1.记录例题程序的实验结果、图形。

2.写出自己编写的程序并记录结果、图形。 3.对实验结果进行分析。

% 注: wp (或Wp )为通带截止频率 ws(或Ws)为阻带截止频率 Rp 为通带衰减 As 为阻带衰减 %butterworth 低通滤波器原型设计函数 要求Ws>Wp>0 As>Rp>0 function [b,a]=afd_butt(Wp,Ws,Rp,As)

N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(Wp/Ws)));

%上条语句为求滤波器阶数 ])

/(log *2)]

110/()110[(log [1010/10/10Ws Wp N As Rp --= N 为整数

%ceil 朝正无穷大方向取整

fprintf('\n Butterworth Filter Order=%2.0f\n',N)

OmegaC=Wp/((10^(Rp/10)-1)^(1/(2*N))) %求对应于N 的3db 截止频率 [b,a]=u_buttap(N,OmegaC);

%非归一化Butterworth 模拟低通滤波器原形设计函数 %得到的b,a 分别为传输函数分子、分母多项式系数 function [b,a]=u_buttap(N,Omegac)

[z,p,k]=buttap(N); %归一化巴特沃思模拟低通滤波器原形 %传输函数用极点形式表示 ))

())...(2())(1(()(n p s p s p s k

s H ---=

p=p*Omegac; %将c s s Ω=/代入上式,相当于分子乘以N

c Ω,极点乘以c Ω

k=k*Omegac^N;

B=real(poly(z)); %poly 为构造具有指定根的多项式 real 为求实部 b=k*B;

a=real(poly(p));

%利用脉冲响应不变法从模拟到数字滤波器变换函数 function [b,a]=imp_invr(c,d,T)

[R,p,k]=residue(c,d); %部分分式展开

p=exp(p*T); %从模拟到数字极点对应关系sT

e z =,部分分式系数相同 [b,a]=residuez(R,p,k); %将部分分式的形式变换成多项式之比的形式 b=real(b'); %求出数字滤波器系数 a=real(a');

%非归一化切比雪夫1型模拟低通滤波器原型设计 function [b,a]=u_chb1ap(N,Rp,Omegac)

[z,p,k]=cheb1ap(N,Rp); %归一化切比雪夫1型模拟低通滤波器原形 a=real(poly(p)); %以下步骤实际上与求巴特沃思滤波器的原理 aNn=a(N+1); %一样,只是所用方法稍有不同。 p=p*Omegac;

a=real(poly(p)); aNu=a(N+1); k=k*aNu/aNn; B=real(poly(z)); b=k*B;

%频率响应函数freqz 的修正,此函数可获得滤波器的幅值响应、相位响应及群延迟响应 function [db,mag,pha,w]=freqz_m(b,a);

[H,w]=freqz(b,a,1000,'whole'); %在0-2*pi 之间选取N 个点计算频率响应 H=(H(1:501))'; %频率响应 w=(w(1:501))'; %频率

mag=abs(H); %响应幅度 db=20*log10((mag+eps)/max(mag)); %增益 pha=angle(H); %相位

%利用脉冲响应不变法设计巴特沃思滤波器 %此程序可直接执行,用到上面的扩展程序 wp=0.2*pi;ws=0.3*pi;Rp=1;As=15;T=1; OmegaP=wp/T;OmegaS=ws/T;

[cs,ds]=afd_butt(OmegaP,OmegaS,Rp,As); [b,a]=imp_invr(cs,ds,T)

[db,mag,pha,w]=freqz_m(b,a); subplot(2,1,1);plot(w/pi,mag);

title('digital filter Magnitude Response') axis([0,1,0,1.1])

subplot(2,1,2);plot(w/pi,db);

title('digital filter Magnitude in DB') axis([0,1,-40,5]);

%利用双线性变换法设计切比雪夫数字滤波器 %此程序可以直接运行,用到上面的扩展函数 wp=0.2*pi;ws=0.3*pi;Rp=1;As=15;T=1;

OmegaP=(2/T)*tan(wp/2); OmegaS=(2/T)*tan(ws/2); ep=sqrt(10^(Rp/10)-1); Ripple=sqrt(1/(1+ep*ep)); Attn=1/(10^(As/20));

A1=1/Attn;a1=sqrt(A1*A1-1)/ep; a2=OmegaS/OmegaP;

N=ceil(logm(a1+sqrt(a1*a1-1))/logm(a2+sqrt(a2*a2-1))); fprintf('\n Chebyshev Filter Order=%2.0f\n',N) [cs,ds]=u_chb1ap(N,Rp,OmegaP); [b,a]=bilinear(cs,ds,T)

[db,mag,pha,w]=freqz_m(b,a); subplot(2,1,1);plot(w/pi,mag);

title('digital filter Magnitude Response'); axis([0,1,0,1.1]) subplot(2,1,2);plot(w/pi,db);

title('digital filter Magnitude in DB'); axis([0,1,-40,5]);

%变直接形式为级联形式 22,11,22,11,01111011...1...)(--------++++∏=++++++=z

A z A z

B z B b z a z a z b z b b z H k k k k k N N N

N function [b0,B,A]=dir2cas(b,a)

b0=b(1);b=b/b0;a0=a(1);a=a/a0;b0=b0/a0; %以上步骤求出系数0b M=length(b); N=length(a); if N>M

b=[b zeros(1,N-M)]; elseif M>N

a=[a zeros(1,M-N)]; else NM=0; end

K=floor(N/2); B=zeros(K,3); A=zeros(K,3); if K*2==N

b=[b 0]; a=[a 0];

end

broots=cplxpair(roots(b)); %以下程序将每两个极点和两个零点组合成二阶因子 aroots=cplxpair(roots(a)); % roots :求多项式的根 for i=1:2:2*K

Brow=broots(i:1:i+1,:); Brow=real(poly(Brow)); B(fix(i+1)/2,:)=Brow; Arow=aroots(i:1:i+1,:); Arow=real(poly(Arow)); A(fix(i+1)/2,:)=Arow; end

实验五 FIR 滤波器设计

一、 实验目的

1.掌握用窗函数法设计FIR 数字滤波器的原理和方法。 2.熟悉线性相位FIR 滤波器特性。

3.了解各种窗函数对滤波特性的影响。 二、 实验原理

如果所希望的滤波器的理想频率响应函数为()j d H e ω, 则其对应的单位脉冲响应为

1()()2j j n d d h n H e e d π

ωωπ

ωπ

-

=

?

用窗函数w(n)将hd(n)截断,并进行加权处理,得到:()()()d h n h n n ω=,h(n)就作为实际设计的FIR 数字滤波器的单位脉冲响应序列, 其频率响应函数()j H e ω为

10

()()N j j n n H e h n e ω

ω--==∑

如果要求线性相位特性, 则h(n)还必须满足:

()(1)h n h N n =±--

根据上式中的正、负号和长度N 的奇偶性又将线性相位FIR 滤波器分成四类。要根据所设计的滤波特性正确选择其中一类。例如,要设计线性相位低通特性,可选择h(n)偶对称的情况,而不能选h(n)奇对称的情况。 三、实验内容及步骤

1.复习用窗函数法设计FIR 数字滤波器一节内容, 阅读本实验原理, 掌握设计步骤。 2.编写程序。

(1)编写能产生矩形窗等窗函数的子程序,画出各种窗函数。

(2)编写利用窗函数法设计FIR 数字低通滤波器的程序。要求包括求数字滤波器频率响应。 要求wp=0.2*pi Rp=0.25db ,ws=0.3*pi As=50db 。 (3)利用滤波器对信号进行滤波。 由三个频率组成的信号,信号频率分别为50Hz,150Hz,300Hz,采样频率为800Hz 。要求分别取出三个频率的信号。

四、 实验报告要求

1.实验原理。

2.按照实验步骤及要求,比较各种情况下的滤波性能,说明窗口长度N 和窗函数类型对滤波特性的影响。

3.总结用窗函数法设计FIR 滤波器的主要特点。

%此函数产生理想低通滤波器的冲激响应 function hd=ideal_lp(wc,M)

alpha=(M-1)/2; % 2

1

-=

M α n=[0:(M-1)];

m=n-alpha+eps; % α-=n m eps 是一个非常小的数,防止m 为零 hd=sin(wc*m)./(pi*m); % m

pi m hd c *)

*sin(ω=

数字信号处理实验二报告

实验二 IIR数字滤波器设计及软件实现 1.实验目的 (1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法; (2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。 (3)掌握IIR数字滤波器的MATLAB实现方法。 (3)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。 2.实验原理 设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求读者调用如上函数直接设计IIR数字滤波器。 本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。 3. 实验内容及步骤 (1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图1所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。 图1 三路调幅信号st的时域波形和幅频特性曲线 (2)要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为

数字信号处理基础实验指导书

《数字信号处理》实验指导书 光电工程学院二○○九年十月

实验一离散时间信号分析 一、实验目的 1.掌握各种常用的序列,理解其数学表达式和波形表示。 2.掌握在计算机中生成及绘制数字信号波形的方法。 3.掌握序列的相加、相乘、移位、反转等基本运算及计算机实现与作用。 4.掌握线性卷积软件实现的方法。 5.掌握计算机的使用方法和常用系统软件及应用软件的使用。 6.通过编程,上机调试程序,进一步增强使用计算机解决问题的能力。 二、实验原理 1.序列的基本概念 离散时间信号在数学上可用时间序列来表示,其中代表序列的第n个数字,n代表时间的序列,n的取值范围为的整数,n取其它值没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号进行等间隔采样,采样间隔为T,得到一个有序的数字序列就是离散时间信号,简称序列。 2.常用序列 常用序列有:单位脉冲序列(单位抽样)、单位阶跃序列、矩形序列、实指数序列、复指数序列、正弦型序列等。 3.序列的基本运算 序列的运算包括移位、反转、和、积、标乘、累加、差分运算等。 4.序列的卷积运算 上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。 (1)反褶:先将和的变量换成,变成和,再将以纵轴为对称轴反褶成。 (2)移位:将移位,得。当为正数时,右移位;当为负数时,左

移位。 (3)相乘:将和的对应点值相乘。 (4)求和:将以上所有对应点的乘积累加起来,即得。 三、主要实验仪器及材料 微型计算机、Matlab软件6.5或更高版本。 四、实验内容 1.知识准备 认真复习以上基础理论,理解本实验所用到的实验原理。 2.离散时间信号(序列)的产生 利用MATLAB或C语言编程产生和绘制下列有限长序列: (1)单位脉冲序列 (2)单位阶跃序列 (3)矩形序列 (4)正弦型序列 (5)任意序列 3.序列的运算 利用MATLAB编程完成上述两序列的移位、反转、加法、乘法等运算,并绘制运算后序列的波形。 4.卷积运算 利用MATLAB编制一个计算两个序列线性卷积的通用程序,计算上述两序列,并绘制卷积后序列的波形。 5.上机调试并打印或记录实验结果。 6.完成实验报告。 五、实验报告要求 1. 简述实验原理及目的。 2. 给出上述序列的实验结果。 3. 列出计算卷积的公式,画出程序框图,并列出实验程序清单 (可略)(包括必要的程序说明)。 4. 记录调试运行情况及所遇问题的解决方法。 5. 给出实验结果,并对结果做出分析。 6. 简要回答思考题。 1 如何产生方波信号序列和锯齿波信号序列? 2 实验中所产生的正弦序列的频率是多少?是否是周期序列?

数字信号处理实验(吴镇扬)答案-2

(1) 观察高斯序列的时域和幅频特性,固定信号)(n x a 中参数p=8,改变q 的 值,使q 分别等于2、4、8,观察他们的时域和幅频特性,了解当q 取不同值时,对信号序列的时域和幅频特性的影响;固定q=8,改变p,使p 分别等于8、13、14,观察参数p 变化对信号序列的时域和幅频特性的影响,注意p 等于多少时会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。 ()() ?????≤≤=-其他0150,2n e n x q p n a 解:程序见附录程序一: P=8,q 变化时: t/T x a (n ) k X a (k ) t/T x a (n ) p=8 q=4 k X a (k ) p=8 q=4 t/T x a (n ) p=8 q=8 k X a (k ) p=8 q=8 幅频特性 时域特性

t/T x a (n ) p=8 q=8 k X a (k ) p=8 q=8 t/T x a (n ) 5 10 15 k X a (k ) p=13 q=8 t/T x a (n ) p=14 q=8 5 10 15 k X a (k ) p=14 q=8 时域特性幅频特性 分析: 由高斯序列表达式知n=p 为期对称轴; 当p 取固定值时,时域图都关于n=8对称截取长度为周期的整数倍,没有发生明显的泄漏现象;但存在混叠,当q 由2增加至8过程中,时域图形变化越来越平缓,中间包络越来越大,可能函数周期开始增加,频率降低,渐渐小于fs/2,混叠减弱; 当q 值固定不变,p 变化时,时域对称中轴右移,截取的时域长度渐渐地不再是周期的整数倍,开始无法代表一个周期,泄漏现象也来越明显,因而图形越来越偏离真实值, p=14时的泄漏现象最为明显,混叠可能也随之出现;

数字信号处理实验程序2.

2.1 clc close all; n=0:15; p=8;q=2; x=exp(-(n-p.^2/q; figure(1; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=2'; xk1=fft(x,16; q=4; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=8,q=4'; q=8; x=exp(-(n-p.^2/q;

xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8';%时域特性figure(2; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=2'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=8,q=4'; subplot(3,1,3; stem(n,abs(xk3; title('exp(-(n-p^2/q,p=8,q=8';%频域特性%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% p=8;q=8; figure(3; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8';

xk1=fft(x,16; p=13; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=13,q=8'; p=14; x=exp(-(n-p.^2/q; xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=14,q=8';%时域特性figure(4; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=8'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=13,q=8'; subplot(3,1,3;

数字信号处理实验作业

实验6 数字滤波器的网络结构 一、实验目的: 1、加深对数字滤波器分类与结构的了解。 2、明确数字滤波器的基本结构及其相互间的转换方法。 3、掌握用MA TLAB 语言进行数字滤波器结构间相互转换的子函数及程序编写方法。 二、实验原理: 1、数字滤波器的分类 离散LSI 系统对信号的响应过程实际上就是对信号进行滤波的过程。因此,离散LSI 系统又称为数字滤波器。 数字滤波器从滤波功能上可以分为低通、高通、带通、带阻以及全通滤波器;根据单位脉冲响应的特性,又可以分为有限长单位脉冲响应滤波器(FIR )和无限长单位脉冲响应滤波器(IIR )。 一个离散LSI 系统可以用系统函数来表示: M -m -1-2-m m m=0 012m N -1-2-k -k 12k k k=1 b z b +b z +b z ++b z Y(z)b(z)H(z)=== =X(z)a(z) 1+a z +a z ++a z 1+a z ∑∑ 也可以用差分方程来表示: N M k m k=1 m=0 y(n)+a y(n-k)=b x(n-m)∑∑ 以上两个公式中,当a k 至少有一个不为0时,则在有限Z 平面上存在极点,表达的是以一个IIR 数字滤波器;当a k 全都为0时,系统不存在极点,表达的是一个FIR 数字滤波器。FIR 数字滤波器可以看成是IIR 数字滤波器的a k 全都为0时的一个特例。 IIR 数字滤波器的基本结构分为直接Ⅰ型、直接Ⅱ型、直接Ⅲ型、级联型和并联型。 FIR 数字滤波器的基本结构分为横截型(又称直接型或卷积型)、级联型、线性相位型及频率采样型等。本实验对线性相位型及频率采样型不做讨论,见实验10、12。 另外,滤波器的一种新型结构——格型结构也逐步投入应用,有全零点FIR 系统格型结构、全极点IIR 系统格型结构以及全零极点IIR 系统格型结构。 2、IIR 数字滤波器的基本结构与实现 (1)直接型与级联型、并联型的转换 例6-1 已知一个系统的传递函数为 -1-2-3 -1-2-3 8-4z +11z -2z H(z)=1-1.25z +0.75z -0.125z 将其从直接型(其信号流图如图6-1所示)转换为级联型和并联型。

数字信号处理实验报告(实验1_4)

实验一 MATLAB 仿真软件的基本操作命令和使用方法 实验容 1、帮助命令 使用 help 命令,查找 sqrt (开方)函数的使用方法; 2、MATLAB 命令窗口 (1)在MATLAB 命令窗口直接输入命令行计算3 1)5.0sin(21+=πy 的值; (2)求多项式 p(x) = x3 + 2x+ 4的根; 3、矩阵运算 (1)矩阵的乘法 已知 A=[1 2;3 4], B=[5 5;7 8],求 A^2*B

(2)矩阵的行列式 已知A=[1 2 3;4 5 6;7 8 9],求A (3)矩阵的转置及共轭转置 已知A=[1 2 3;4 5 6;7 8 9],求A' 已知B=[5+i,2-i,1;6*i,4,9-i], 求B.' , B' (4)特征值、特征向量、特征多项式 已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A的特征值、特征向量、特征多项式;

(5)使用冒号选出指定元素 已知:A=[1 2 3;4 5 6;7 8 9];求A 中第3 列前2 个元素;A 中所有列第2,3 行的元素; 4、Matlab 基本编程方法 (1)编写命令文件:计算1+2+…+n<2000 时的最大n 值;

(2)编写函数文件:分别用for 和while 循环结构编写程序,求 2 的0 到15 次幂的和。

5、MATLAB基本绘图命令 (1)绘制余弦曲线 y=cos(t),t∈[0,2π]

(2)在同一坐标系中绘制余弦曲线 y=cos(t-0.25)和正弦曲线 y=sin(t-0.5), t∈[0,2π] (3)绘制[0,4π]区间上的 x1=10sint 曲线,并要求: (a)线形为点划线、颜色为红色、数据点标记为加号; (b)坐标轴控制:显示围、刻度线、比例、网络线 (c)标注控制:坐标轴名称、标题、相应文本; >> clear;

数字信号处理实验一

一、实验目的 1. 通过本次实验回忆并熟悉MATLAB这个软件。 2. 通过本次实验学会如何利用MATLAB进行序列的简单运算。 3. 通过本次实验深刻理解理论课上的数字信号处理的一个常见方法——对时刻n的样本附近的一些样本求平均,产生所需的输出信号。 3. 通过振幅调制信号的产生来理解载波信号与调制信号之间的关系。 二、实验内容 1. 编写程序在MATLAB中实现从被加性噪声污染的信号中移除噪声的算法,本次试验采用三点滑动平均算法,可直接输入程序P1.5。 2. 通过运行程序得出的结果回答习题Q1.31-Q1.33的问题,加深对算法思想的理解。 3. 编写程序在MATLAB中实现振幅调制信号产生的算法,可直接输入程序P1.6。 4. 通过运行程序得出的结果回答习题Q1.34-Q1.35的问题,加深对算法思想的理解。 三、主要算法与程序 1. 三点滑动平均算法的核心程序: %程序P1.5 %通过平均的信号平滑 clf; R=51; d=0.8*(rand(R,1)-0.5);%产生随噪声 m=0:R-1; s=2*m.*(0.9.^m);%产生为污染的信号 x=s+d';%产生被噪音污染的信号 subplot(2,1,1); plot(m,d','r-',m,s,'g--',m,x,'b-.');

xlabel('时间序号n');ylabel('振幅'); legend('d[n]','s[n]','x[n]'); x1=[0 0 x];x2=[0 x 0];x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2); plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n]','s[n]'); xlabel('时间序号n');ylabel('振幅'); 2. 振幅调制信号的产生核心程序:(由于要几个结果,因此利用subplot函数画图) %程序P1.6 %振幅调制信号的产生 n=0:100; m=0.1;fH=0.1;fL=0.01; m1=0.3;fH1=0.3;fL1=0.03; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; xH1=sin(2*pi*fH1*n); xL1=sin(2*pi*fL1*n); y1=(1+m1*xL).*xH; y2=(1+m*xL).*xH1; y3=(1+m*xL1).*xH; subplot(2,2,1); stem(n,y); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.1;fH=0.1;fL=0.01;'); subplot(2,2,2); stem(n,y1); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.1;fL=0.01;'); subplot(2,2,3); stem(n,y2); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.3;fL=0.01;'); subplot(2,2,4); stem(n,y3); grid;

数字信号处理实验作业

实验5 抽样定理 一、实验目的: 1、了解用MA TLAB 语言进行时域、频域抽样及信号重建的方法。 2、进一步加深对时域、频域抽样定理的基本原理的理解。 3、观察信号抽样与恢复的图形,掌握采样频率的确定方法和插公式的编程方法。 二、实验原理: 1、时域抽样与信号的重建 (1)对连续信号进行采样 例5-1 已知一个连续时间信号sin sin(),1Hz 3 ππ=0001f(t)=(2f t)+6f t f ,取最高有限带宽频率f m =5f 0,分别显示原连续时间信号波形和F s >2f m 、F s =2f m 、F s <2f m 三情况下抽样信号的波形。 程序清单如下: %分别取Fs=fm ,Fs=2fm ,Fs=3fm 来研究问题 dt=0.1; f0=1; T0=1/f0; m=5*f0; Tm=1/fm; t=-2:dt:2; f=sin(2*pi*f0*t)+1/3*sin(6*pi*f0*t); subplot(4,1,1); plot(t,f); axis([min(t),max(t),1.1*min(f),1.1*max(f)]); title('原连续信号和抽样信号'); for i=1:3; fs=i*fm;Ts=1/fs; n=-2:Ts:2; f=sin(2*pi*f0*n)+1/3*sin(6*pi*f0*n); subplot(4,1,i+1);stem(n,f,'filled'); axis([min(n),max(n),1.1*min(f),1.1*max(f)]); end 程序运行结果如图5-1所示:

原连续信号和抽样信号 图5-1 (2)连续信号和抽样信号的频谱 由理论分析可知,信号的频谱图可以很直观地反映出抽样信号能否恢复原模拟信号。因此,我们对上述三种情况下的时域信号求幅度谱,来进一步分析和验证时域抽样定理。 例5-2编程求解例5-1中连续信号及其三种抽样频率(F s>2f m、F s=2f m、F s<2f m)下的抽样信号的幅度谱。 程序清单如下: dt=0.1;f0=1;T0=1/f0;fm=5*f0;Tm=1/fm; t=-2:dt:2;N=length(t); f=sin(2*pi*f0*t)+1/3*sin(6*pi*f0*t); wm=2*pi*fm;k=0:N-1;w1=k*wm/N; F1=f*exp(-j*t'*w1)*dt;subplot(4,1,1);plot(w1/(2*pi),abs(F1)); axis([0,max(4*fm),1.1*min(abs(F1)),1.1*max(abs(F1))]); for i=1:3; if i<=2 c=0;else c=1;end fs=(i+c)*fm;Ts=1/fs; n=-2:Ts:2;N=length(n); f=sin(2*pi*f0*n)+1/3*sin(6*pi*f0*n); wm=2*pi*fs;k=0:N-1; w=k*wm/N;F=f*exp(-j*n'*w)*Ts; subplot(4,1,i+1);plot(w/(2*pi),abs(F)); axis([0,max(4*fm),1.1*min(abs(F)),1.1*max(abs(F))]); end 程序运行结果如图5-2所示。 由图可见,当满足F s≥2f m条件时,抽样信号的频谱没有混叠现象;当不满足F s≥2f m 条件时,抽样信号的频谱发生了混叠,即图5-2的第二行F s<2f m的频谱图,,在f m=5f0的围,频谱出现了镜像对称的部分。

数字信号处理实验1认识实验

实验1认识实验-MATLAB语言上机操作实践 一、实验目的 ㈠了解MATLAB语言的主要特点、作用。 ㈡学会MATLAB主界面简单的操作使用方法。 ㈢学习简单的数组赋值、运算、绘图、流程控制编程。 二、实验原理 ㈠简单的数组赋值方法 MATLAB中的变量和常量都可以是数组(或矩阵),且每个元素都可以是复数。 在MATLAB指令窗口输入数组A=[1 2 3;4 5 6;7 8 9],观察输出结果。然后,键入:A(4,2)= 11 键入:A (5,:) = [-13 -14 -15] 键入:A(4,3)= abs (A(5,1)) 键入:A ([2,5],:) = [ ] 键入:A/2 键入:A (4,:) = [sqrt(3) (4+5)/6*2 –7] 观察以上各输出结果。将A式中分号改为空格或逗号,情况又如何?请在每式的后面标注其含义。 2.在MATLAB指令窗口输入B=[1+2i,3+4i;5+6i ,7+8i], 观察输出结果。 键入:C=[1,3;5,7]+[2,4;6,8]*i,观察输出结果。 如果C式中i前的*号省略,结果如何? 键入:D = sqrt (2+3i) 键入:D*D 键入:E = C’, F = conj(C), G = conj(C)’ 观察以上各输出结果, 请在每式的后面标注其含义。 3.在MATLAB指令窗口输入H1=ones(3,2),H2=zeros(2,3),H3=eye(4),观察输出结果。 ㈡、数组的基本运算 1.输入A=[1 3 5],B= [2 4 6],求C=A+B,D=A-2,E=B-A 2.求F1=A*3,F2=A.*B,F3=A./B,F4=A.\B, F5=B.\A, F6=B.^A, F7=2./B, F8=B.\2 *3.求B',Z1=A*B’,Z2=B’*A 观察以上各输出结果,比较各种运算的区别,理解其含义。 ㈢、常用函数及相应的信号波形显示 例1:显示曲线f(t)=2sin(2πt),(t>0) ⅰ点击空白文档图标(New M-file),打开文本编辑器。 ⅱ键入:t=0:0.01:3; (1) f=2*sin(2*pi*t); (2) plot(t,f); title(‘f(t)-t曲线’); xlabel(‘t’),ylabel(‘f(t)’);

数字信号处理实验答案完整版

数字信号处理实验答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

实验一熟悉Matlab环境 一、实验目的 1.熟悉MATLAB的主要操作命令。 2.学会简单的矩阵输入和数据读写。 3.掌握简单的绘图命令。 4.用MATLAB编程并学会创建函数。 5.观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 clear all; a=[1 2 3 4]; b=[3 4 5 6]; c=a+b; d=a-b; e=a.*b; f=a./b; g=a.^b; n=1:4; subplot(4,2,1);stem(n,a); xlabel('n');xlim([0 5]);ylabel('A'); subplot(4,2,2);stem(n,b); xlabel('n');xlim([0 5]);ylabel('B'); subplot(4,2,3);stem(n,c); xlabel('n');xlim([0 5]);ylabel('C'); subplot(4,2,4);stem(n,d); xlabel('n');xlim([0 5]);ylabel('D'); subplot(4,2,5);stem(n,e); xlabel('n');xlim([0 5]);ylabel('E'); subplot(4,2,6);stem(n,f); xlabel('n');xlim([0 5]);ylabel('F'); subplot(4,2,7);stem(n,g); xlabel('n');xlim([0 5]);ylabel('G'); (2)用MATLAB实现下列序列: a) x(n)= 0≤n≤15 b) x(n)=e+3j)n 0≤n≤15 c) x(n)=3cosπn+π)+2sinπn+π) 0≤n≤15 d) 将c)中的x(n)扩展为以16为周期的函数x(n)=x(n+16),绘出四个周期。

数字信号处理实验(吴镇扬)答案-4

实验四 有限长单位脉冲响应滤波器设计 朱方方 0806020433 通信四班 (1) 设计一个线性相位FIR 高通滤波器,通带边界频率为0.6π,阻带边界频率为0.4π,阻 带衰减不小于40dB 。要求给出h(n)的解析式,并用MATLAB 绘出时域波形和幅频特性。 解: (1) 求数字边界频率: 0.6 , .c r ωπωπ== (2) 求理想滤波器的边界频率: 0.5n ωπ= (3) 求理想单位脉冲响应: []d s i n ()s i n [()] () ()1n n n n n n h n n παωαα παωα π?-- -≠??-=? ? -=?? (4) 选择窗函数。阻带最小衰减为-40dB ,因此选择海明窗(其阻带最小衰减为-44dB);滤 波器的过渡带宽为0.6π-0.4π=0.2π,因此 6.21 0.231 , 152 N N N ππα-=?=== (5) 求FIR 滤波器的单位脉冲响应h(n): []31d sin (15)sin[0.5(15)] 1cos ()15()()()15(15)1 15 n n n R n n h n w n h n n n ππππ?---????-? ?≠? ???==-???? ? ?=? 程序: clear; N=31; n=0:N-1; hd=(sin(pi*(n-15))-sin(0.5*pi*(n-15)))./(pi *(n-15)); hd(16)=0.5; win=hanning(N); h=win'.*hd; figure; stem(n,h); xlabel('n'); ylabel('h(n)'); grid; title('FIR 高通滤波单位脉冲响应h(n)'); [H,w]=freqz(h,1); H=20*log10(abs(H)); figure;3 plot(w/pi,H); axis([0 1 -100 10]); xlabel('\omega/\pi'); ylabel('幅度/dB'); grid; title('FIR 高通滤波器,hanning 窗,N=31');

数字信号处理实验及参考程序

数字信号处理实验实验一离散时间信号与系统及MA TLAB实现 1.单位冲激信号: n = -5:5; x = (n==0); subplot(122); stem(n, x); 2.单位阶跃信号: x=zeros(1,11); n0=0; n1=-5; n2=5; n = n1:n2; x(:,n+6) = ((n-n0)>=0); stem(n,x); 3.正弦序列: n = 0:1/3200:1/100; x=3*sin(200*pi*n+1.2); stem(n,x); 4.指数序列 n = 0:1/2:10; x1= 3*(0.7.^n); x2=3*exp((0.7+j*314)*n); subplot(221); stem(n,x1); subplot(222); stem(n,x2); 5.信号延迟 n=0:20; Y1=sin(100*n); Y2=sin(100*(n-3)); subplot(221); stem(n,Y1); subplot(222); stem(n,Y2);

6.信号相加 X1=[2 0.5 0.9 1 0 0 0 0]; X2=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; X=X1+X2; stem(X); 7.信号翻转 X1=[2 0.5 0.9 1]; n=1:4; X2=X1(5-n); subplot(221); stem(n,X1); subplot(222); stem(n,X2); 8.用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度'); 9.用MA TLAB计算差分方程 当输入序列为时的输出结果。 N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n'); ylabel('幅度') 10.冲激响应impz N=64; a=[0.8 -0.44 0.36 0.22];

实验一 基于Matlab的数字信号处理基本

实验一 基于Matlab 的数字信号处理基本操作 一、 实验目的:学会运用MA TLAB 表示的常用离散时间信号;学会运用MA TLAB 实现离 散时间信号的基本运算。 二、 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 三、 实验内容: (一) 离散时间信号在MATLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。 离散时间信号的波形绘制在MATLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MA TLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。 1. 单位取样序列 单位取样序列)(n δ,也称为单位冲激序列,定义为 ) 0() 0(0 1)(≠=?? ?=n n n δ 要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MATLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即 function y=impDT(n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 【实例1-1】 利用MATLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MATLAB 源程序为 >>n=-3:3; >>x=impDT(n); >>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1]) 程序运行结果如图1-1所示。 图1-1 单位冲激序列

数字信处理上机实验答案全

数字信处理上机实验答 案全 Document number【SA80SAB-SAA9SYT-SAATC-SA6UT-SA18】

第十章 上机实验 数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。本章在第二版的基础上编写了六个实验,前五个实验属基础理论实验,第六个属应用综合实验。 实验一系统响应及系统稳定性。 实验二时域采样与频域采样。 实验三用FFT对信号作频谱分析。 实验四 IIR数字滤波器设计及软件实现。 实验五 FIR数字滤波器设计与软件实现 实验六应用实验——数字信号处理在双音多频拨号系统中的应用 任课教师根据教学进度,安排学生上机进行实验。建议自学的读者在学习完第一章后作实验一;在学习完第三、四章后作实验二和实验三;实验四IIR数字滤波器设计及软件实现在。学习完第六章进行;实验五在学习完第七章后进行。实验六综合实验在学习完第七章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。 实验一: 系统响应及系统稳定性 1.实验目的 (1)掌握求系统响应的方法。 (2)掌握时域离散系统的时域特性。 (3)分析、观察及检验系统的稳定性。 2.实验原理与方法 在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。在计算机上适合用递推法求差分方程的解,最简单的方法是采用MATLAB语言的工具箱函数filter函数。也可以用MATLAB语言的工具箱函数conv函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。 系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。 系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。或者系统的单位脉冲响应满足绝对可和的条件。系统的稳定性由其差分方程的系数决定。 实际中检查系统是否稳定,不可能检查系统对所有有界的输入信号,输出是否都是有界输出,或者检查系统的单位脉冲响应满足绝对可和的条件。可行的方法是在系统的输入端加入单位阶跃序列,如果系统的输出趋近一个常数(包括零),就可以断定系统是稳定的[19]。系统的稳态输出是指当∞ n时,系统的输出。如果系统稳定,信号加入 → 系统后,系统输出的开始一段称为暂态效应,随n的加大,幅度趋于稳定,达到稳态输出。 注意在以下实验中均假设系统的初始状态为零。 3.实验内容及步骤

数字信号处理基础实验报告_

本科生实验报告 实验课程数字信号处理基础 学院名称地球物理学院 专业名称地球物理学 学生姓名 学生学号 指导教师王山山 实验地点5417 实验成绩 二〇一四年十一月二〇一四年十二月

填写说明 1、适用于本科生所有的实验报告(印制实验报告册除外); 2、专业填写为专业全称,有专业方向的用小括号标明; 3、格式要求: ①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。 ②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下2.54cm, 左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准);页码用小五号字底端居中。 ③具体要求: 题目(二号黑体居中); 摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体); 关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体); 正文部分采用三级标题; 第1章××(小二号黑体居中,段前0.5行) 1.1 ×××××小三号黑体×××××(段前、段后0.5行) 1.1.1小四号黑体(段前、段后0.5行) 参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。

实验一生成离散信号并计算其振幅谱 并将信号进行奇偶分解 一、实验原理 单位脉冲响应h(t)=exp(-a*t*t)*sin(2*3.14*f*t)进行离散抽样,分别得到t=0.002s,0.009s,0.011s采样的结果。用Excel软件绘图显示计算结果。并将信号进行奇偶分解,分别得到奇对称信号h(n)-h(-n)与偶对称信号h(n)+h(-n)。用Excel 软件绘图显示计算结果。 二、实验程序代码 (1)离散抽样 double a,t; a=2*f*f*log(m); int i; for(i=0;i

数字信号处理上机实验代码

文件名:tstem.m(实验一、二需要) 程序: f unction tstem(xn,yn) %时域序列绘图函数 %xn:被绘图的信号数据序列,yn:绘图信号的纵坐标名称(字符串)n=0:length(xn)-1; stem(n,xn,'.'); xlabel('n');ylabel('yn'); axis([0,n(end),min(xn),1.2*max(xn)]); 文件名:tplot.m(实验一、四需要) 程序: function tplot(xn,T,yn) %时域序列连续曲线绘图函数 %xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串) %T为采样间隔 n=0;length(xn)-1;t=n*T; plot(t,xn); xlabel('t/s');ylabel(yn); axis([0,t(end),min(xn),1.2*max(xn)]); 文件名:myplot.m(实验一、四需要)

%(1)myplot;计算时域离散系统损耗函数并绘制曲线图。function myplot(B,A) %B为系统函数分子多项式系数向量 %A为系统函数分母多项式系数向量 [H,W]=freqz(B,A,1000) m=abs(H); plot(W/pi,20*log10(m/max(m)));grid on; xlabel('\omega/\pi');ylabel('幅度(dB)') axis([0,1,-80,5]);title('损耗函数曲线'); 文件名:mstem.m(实验一、三需要) 程序: function mstem(Xk) %mstem(Xk)绘制频域采样序列向量Xk的幅频特性图 M=length(Xk); k=0:M-1;wk=2*k/M;%产生M点DFT对应的采样点频率(关于pi归一化值) stem(wk,abs(Xk),'.');box on;%绘制M点DFT的幅频特性图xlabel('w/\pi');ylabel('幅度'); axis([0,2,0,1.2*max(abs(Xk))]); 文件名:mpplot.m(实验一需要)

数字信号处理第二章上机题作业

数字信号处理作业实验题报告 第一章16.(1) 实验目的: 求解差分方程所描述的系统的单位脉冲响应和单位阶跃响应。 实验要求: 运用matlab求出y(n)=0.6y(n-1)-0.08y(n-2)+x(n)的单位脉冲响应和单位阶跃响应的示意图。 源程序: B1=1;A1=[1, -0.6, 0.08]; ys=2; %设差分方程 xn=[1, zeros(1, 20)]; %xn=单位脉冲序列,长度N=31 xi=filtic(B1, A1, ys); hn1=filter(B1, A1, xn, xi); %求系统输出信号hn1 n=0:length(hn1)-1; subplot(2, 1, 1);stem(n, hn1, '.') title('单位脉冲响应'); xlabel('n');ylabel('h(n)') xn=ones(1, 20); sn1=filter(B1, A1, xn, xi); %求系统输出信号sn1 n=0:length(sn1)-1; Subplot(2, 1, 2); stem(n, sn1, '.') title('单位阶跃响应'); xlabel('n'); ylabel('s(n)')

运行结果: 实验分析: 单位脉冲响应逐渐趋于0,阶跃响应保持不变,由此可见,是个稳定系统。

第二章31题 实验目的: 用matlab判断系统是否稳定。 实验要求: 用matlab画出系统的极,零点分布图,输入单位阶跃序列u(n)检查系统是否稳定。 源程序: A=[2, -2.98, 0.17, 2.3418, -1.5147]; B=[0, 0, 1, 5, -50]; subplot(2,1,1); zplane(B,A); %求H(z)的极点 p=roots(A); %求H(z)的模 pm=abs(p); if max(pm)<1 disp('系统因果稳定'), else,disp('系统因果不稳定'),end un=ones(1,800); sn=filter(B, A, un); n=0:length(sn)-1; subplot(2, 1, 2);plot(n, sn) xlabel('n');ylabel('s(n)')

数字信号处理基础实验报告 (2)

成都理工大学 《信号处理基础》实验 开设时间:2013—2014学年第2学期

题目1:信号的产生和显示 一、实验目的: 认识基本信号 通过使用MATLAB 设计简单程序, 掌握对MATLAB 的基本使用方法 二、实验原理: 找出下列表达式的信号与:正弦信号、最小相位信号、最大相位信号、零相位信号的对应关系。 1、sin60t 2、e-60t sin60t 3、(1- e-60t)sin60t 4、e60t sin60t 三、实验内容: 产生上述信号的信号并显示 (1)t=[-pi/30:0.001:pi/30]; f=sin(60*t); plot(t,f) 产生图形如下:

(2)t=[0:0.001:pi/30]; f=exp(-60*t).*sin(60*t); plot(t,f) 产生图形如下:

(3)t=[-5*pi/30:0.001:5*pi/30]; f=(1-exp(-60*t)).*sin(60*t); plot(t,f) 产生图形如下: (4) t=[-pi/30:0.001:pi/30]; f=exp(6*t).*sin(60*t); plot(t,f) 产生如下波形:

四、实验结果与讨论: 讨论上述信号的特点 从第一个波形图可以看出,它的波形与正弦函数sin(t)的相像,只是相位上有改变,是一个正弦信号。最大相位信号的能量集中在后面,最小相位能量集中在前面,所以第二个是一个最小相位,第四个是一个最大相位信号。第三个由于波形在t>0时没有,所以是一个零相位信号。 题目2:频谱分析与显示 一、实验目的 初步认识频谱分析

相关主题
文本预览
相关文档 最新文档