MATLAB数字信号处理小实验

亦凉 2022-09-09 02:05 438阅读 0赞

MATLAB数字信号处理小实验

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

1.程序

(1) 单位抽样序列

v2-279cfceb12d4d6428bd2eafd25c47931\_b.jpg

v2-9e22fab76936f497c3c5857a2a32357f\_b.jpg

如果

v2-5289fbc67c5f4ae2983c0a3661ee8bf8\_b.jpg

在时间轴上延迟了k个单位,得到

v2-6eb370ce4377f5cb94853d3ead712ce8\_b.jpg

即:

v2-5ef9d9110b669a3e926a39f47349e2b1\_b.jpg

v2-ab0f07c6f7e748d0a5341ad453074306\_b.jpg

程序如下:

N=20;

k=9;

x=zeros(1,N);

x(10)=1;

n=[k-9:N+k-10];

stem(n,x);

v2-c065b37bd7f6cf427145e69f3e5d70f6\_b.jpg

(2) 单位阶跃序列

v2-e05ea3df22e05cbbedd43e3e15b2b242\_b.jpg

v2-5f4230b33649afd5cb64cb49ccbe978f\_b.jpg

程序如下:

N=20;

x=ones(1,N);

x(1:3)=0;

n=[-3:N-4];

stem(n,x);

v2-97b1543f83890933b6dbf0c0a07ba1f9\_b.jpg

title(‘单位阶跃序列’);

(3) 正弦序列

v2-21f4ed3d53e33ab5666d7752f6dc0a7e\_b.jpg

程序如下:

N=50;

n=0:N-1;

A=1;

f=50;

Fs=f*N;

fai=0.5*pi;

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

stem(n,x);

v2-04094dd32b7eb89d141b4235739008d1\_b.jpg

(4) 复正弦序列

v2-4eaa636ca66845e81d18e8c627cc559c\_b.jpg

程序如下:

N=50;

n=0:N-1;

w=2*pi/N;

x=exp(j*w*n);

plot(x,’*‘);

v2-868c202005e6f7b95338133fe14fd66d\_b.jpg

复指数序列

v2-a32e32071f07d4c5616288ba5228f3cf\_b.jpg

v2-d107f2eba15aedba7afc481ab61d2fd6\_b.jpg

,它具有实部与虚部,

v2-64842c8cba704f51156f208ad0779626\_b.jpg

是复正弦的数字域频率。对第一种表示形式,可以写成

v2-5f55befcb8774485e3566a8341e00ebd\_b.jpg

如果用极坐标表示,则

v2-ecf051c7627dcbb45eb10b79e1d9bebd\_b.jpg

v2-7ee9eb82372003a33dba91996284be29\_b.jpg

,

v2-bfb590f01ce75fe67b0ec74557eb72c3\_b.jpg

v2-2d5dfcfc3488546e1c603f0399dcde8b\_b.jpg

,则x(n)为衰减的复正弦,其实部和虚部分别为衰减振荡的正弦分量;若实部

v2-c807bb821f321372f7864fad2590fa27\_b.jpg

,则实部和虚部分别为增大的正弦分量;若

v2-d92ad2c46b3ee744abf8b63586cfd8c3\_b.jpg

,则实部和虚部分别为等幅振荡。本实验中使用的信号为

v2-5f9509cbc72ec4f5d9a74e782745cec9\_b.jpg

时的情况,即等幅振荡信号。实验图示为极坐标下的复指数序列图。横坐标表示实部,纵坐标表示虚部。从图中明显看出,序列各点幅值相等,只有相角的周期性变化。

(5) 指数序列

v2-b0eea872f17d53f70d2aa29c3d55938e\_b.jpg

程序如下:

N=50;

a=1.1;

n=0:N-1;

x=a.^n;

plot(n,x,’*‘);

v2-f7caef71726c0d9ac39cd97598fc3099\_b.jpg

实验2 离散系统的差分方程、冲激响应和卷积分析

实验目的:加深对离散系统的差分方程、单位脉冲响应和卷积分析方法的理解。

实验原理:离散系统

v2-016e1edde9654393f2f65c3323cc1c70\_b.jpg

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

v2-d4379a6150f42789f960e1c60efb7d43\_b.jpg

输入信号分解为单位脉冲序列,

v2-532e233e0b4cd9830754b5bace1aaab7\_b.jpg

记系统单位脉冲响应

v2-989f546c16335c73f7217aa958f93e52\_b.jpg

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

v2-f1b83d66a4e58a56ad0ced80b82d525c\_b.jpg

v2-7f8fe76e47f6ee09d37d38b534cca30f\_b.jpg

时,h[n]是有限长度的(n:[0,M]),称系统为FIR系统;反之,称系统为IIR系统。在MATLAB中,可以用函数y=Filter(p,d,x)求解差分方程,也可以用函数y=Conv(x,h)计算卷积。

  1. IIR的冲激响应和阶跃响应:

v2-6b7f0febaf2c51eb48183557efbfab38\_b.jpg

  1. FIR的冲激响应和阶跃响应:

v2-edd5e5fe9c98f9ae9e0ed88a23c136bd\_b.jpg

1.程序

N=20;

p1=[1,-1];

d1=[1,0.6,0.08];

p2=[0,0.2,0.2,0.2,0.2,0.2];

d2=1;

delta=[1,zeros(1,N-1)];

u=ones(1,N);

labelx=0:N-1;

h1=filter(p1,d1,delta);

y1=filter(p1,d1,u);

h2=filter(p2,d2,delta);

y2=filter(p2,d2,u);

subplot(2,2,1);

stem(labelx,h1);

title(‘系统1单位冲激响应’,’fontsize’,15);

subplot(2,2,2);

stem(labelx,y1);

title(‘系统1单位阶跃响应’,’fontsize’,15);

subplot(2,2,3);

stem(labelx,h2);

title(‘系统2单位冲激响应’,’fontsize’,15);

subplot(2,2,4);

stem(labelx,y2);

title(‘系统2单位阶跃响应’,’fontsize’,15);

2.程序计算结果

计算结果精确到小数点后四位,只计算前20个点。

1)系统1

单位冲激响应:

1 -1.6 0.88 -0.4 0.1696 -0.0698 0.0283 -0.0114 0.0046 -0.0018 0.0007 -0.0003 0.0001 0 0 0 0 0 0 0

单位阶跃响应:

1 -0.6 0.28 -0.12 0.0496 -0.0202 0.0081 -0.0033 0.0013 -0.0005 0.0002 -0.0001 0 0 0 0 0 0 0 0

2)系统2

单位冲激响应:

0 0.2 0.2 0.2 0.2 0.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0

单位阶跃响应:

0 0.2 0.4 0.6 0.8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

3.两系统单位冲激响应和单位阶跃响应图形

v2-ec27bc627ace68f76e87dc713da06d73\_b.jpg

4.理论计算结果

求取单位冲激响应时,

v2-bc60078b3ac91b4f72af00bd4c4aee43\_b.jpg

求取单位阶跃响应时,

v2-1258677931751243cd30094e120972ce\_b.jpg

系统为因果系统,有

v2-4354874a60e6281ccfc7c316da63eb1d\_b.jpg

1)对系统1:

v2-cfc04a05f931b3a6c860af63a7043b61\_b.jpg

单位冲激响应:

v2-6f3f271c842c738252be64d8dbd9a3a6\_b.jpg

v2-3b994b63eb0beb997ec38f6bac64952e\_b.jpg

v2-1d41331544424e04e43330ec7fb260fc\_b.jpg

v2-9798f577d5a58662c9a2ebd7644b4a85\_b.jpg

v2-bb979908ef86e73f0b218a10d36c4f34\_b.jpg

v2-24f786ede9aa076846fb3a3df5fe57dd\_b.jpg

单位阶跃响应:

v2-d93f9039f199032e0bfc50b8c9471c1d\_b.jpg

v2-0bdf9c84d06b07f66a33612d1fb784b1\_b.jpg

v2-c23e4f51ed97e547035c60952cbb0ec2\_b.jpg

v2-fd8c6d191fcbd04fe1565d4563c2755f\_b.jpg

v2-4e1391f0a43376bf874c4d46a384e9a2\_b.jpg

v2-24f786ede9aa076846fb3a3df5fe57dd\_b.jpg

2)对系统2:

v2-fefc196a82ccde038ccbd0b98bba8f42\_b.jpg

单位冲激响应:

v2-06f36dcd28dd7fbea2f84e4e73729e4e\_b.jpg

v2-d3f3485ea06d61ea50fb6aad1eedbfc6\_b.jpg

v2-753752ccebaf311bc46823962bcc98a0\_b.jpg

v2-23e399b8825448cc2f649674b295e31a\_b.jpg

v2-dfbe9c877b9465f505d6974944760195\_b.jpg

v2-78ecb7d49e7269bd3c30e5d347e95e40\_b.jpg

v2-fd94f7e0c4b0d3f0458efea6b0b4cbc8\_b.jpg

v2-814b75810f490dee2b6b0d0c06f5cba2\_b.jpg

单位阶跃响应:

v2-8d1fae0a2ab1564a823da9fc90b953a2\_b.jpg

v2-9c055446c45d2737b1940cc4316fb779\_b.jpg

v2-bd56c683a2e6173a4db64c9403b4205b\_b.jpg

v2-8bd5dc9bbe9f48f61214cdf4207b2341\_b.jpg

v2-594f87847eccccd56285a54b909adf37\_b.jpg

v2-32aef081bbbf880f0859a7c39ca83f7d\_b.jpg

v2-2eabe70974c4074f0acbb6c5a2bed920\_b.jpg

对比理论计算结果和计算机程序计算结果,两者保持一致。对不同的系统,因其系统函数不同和收敛域不同,单位冲激响应和单位阶跃响也不同。

实验3 离散系统的频率响应分析和零、极点分布

v2-b4b4d9b20c5e6ff82a820691f07629de\_b.jpg

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

1.程序

num=[0.0528,0.797,0.1295,0.1295,0.797,0.0528];

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

subplot(2,1,1);

zplane(num,den);

title(‘系统零极点图’);

[h,w]=freqz(num,den,’whole’);

h=abs(h);

subplot(2,1,2);

plot(w,h);

title(‘系统幅度频率响应’);

v2-6876535985a77926e1cbb663a9a90ccc\_b.jpg

实验4 离散信号的DTFT和DFT

分别计算16点序列

v2-dcc106d976ab05eaa0819edb48cfe4e4\_b.jpg

的16点和32点DFT,绘出幅度谱图形,并绘出该序列的DTFT图形

1.程序

N1=16;

n1=0:N1-1;

N2=32;

n2=0:N2-1;

x=cos(5*pi*n1/16);

x1=fft(x,N1);

x2=fft(x,N2);

subplot(2,2,1);

stem(n1,abs(x1));

title(‘16点DFT幅度谱图’);

subplot(2,2,2);

stem(n2,abs(x2));

title(‘32点DFT幅度谱图’);

num=x;

den=1;

[h,w]=freqz(num,den,’whole’);

subplot(2,2,3);

plot(w,abs(h));

title(‘DTFT幅度谱图’);

subplot(2,2,4);

plot(w,angle(h)*180/pi);

title(‘DTFT相位谱图’);

v2-ee7190167ab3417176b0335aabfb888c\_b.jpg

3.讨论

v2-6518004b3a3430b7e3e1b69284ca0f4a\_b.jpg

N点有限长序列,其DTFT及DFT分别是:

v2-1255dbc91739a5a6fec085edbddbe410\_b.jpg

v2-885c36a7788e2570f8cecc7b14232f1f\_b.jpg

显然,当

v2-463f50fdcbd836d3c9c28d37aa534e14\_b.jpg

时,两者是相等的,这说明DFT是对离散时间序列在频域以

v2-caec8aee3e654d2a36d4152c9478f0ec\_b.jpg

的整数倍频率上的抽样。即DFT是对DTFT的频率离散化的结果,从图中可以看出,实验结果与理论分析一致。从实验还可以看出:在时域内增加序列的长度(“补零”以增大周期),相当于在频域序列进行插值。这也就是实验现象产生的原因。

实验5 FFT算法的应用

  1. 2N点实数序列

v2-e1bcba423cb8326bea86afd45f9ce2c1\_b.jpg

N=64。用一个64点的复数FFT程序,一次算出

v2-3acbcff6d869ad3935bd8a151f1548c5\_b.jpg

,并绘出

v2-0c4ae4e2ffef76684d4835c3bbcc36a6\_b.jpg

(2) 已知某序列

v2-5d101bd4a9197523d8ae44d3f9943902\_b.jpg

在单位圆上的N=64等分样点的Z变换为

v2-6acf0b6b860c921c3394cad05cba9d48\_b.jpg

。用N点IFFT程序计算

v2-a1b03bc791b2a3dcf11856e7ce7266a0\_b.jpg

,绘出和

v2-bfda6317d9a291d62f7091a958a98cab\_b.jpg

1.程序

1)N=64;

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

xn1=cos(2*pi/N*7*n)+1/2*cos(2*pi/N*19*n);

xk1=fft(xn1);

xk2=abs(xk1);

stem(n,xk2);

xlabel(‘k’);

ylabel(‘x(k)’)

v2-7b9985d483ea6df58c84b7a2ad710866\_b.jpg

2)

N=64;

n=[0:N-1];

xk=1./(1-0.8.*exp(-j*2*pi*n/N));

xn=fft(xk,N);

stem(n,xn);

xlabel(‘k’);

ylabel(‘x(n)’)

v2-9cd572f97265e231bebc4adb8fef1d04\_b.jpg

3.讨论

从2N点FFT结果可以看出,频域序列X(k)含有4条谱线,但事实上只对应有两个不同的频率(根据奈奎斯特采样定理,另外两条谱线没有实际意义),即f=7Hz和f=19Hz,但从图1中却观察到,|X(k)|在f=14Hz和f=38Hz处有不为零频谱分量,且为给出的离散时间信号x(n)所含的对应频率的两倍。另外,虽然序列x(n)总共有2N=128点,但实际上从n=64到127这N点是对上一个周期的重复,由于计算FFT时只需要一个完整周期的信号即可,而2N点的FFT用的序列x(n)在时域却有两个周期,因此出现了“频谱移动”的现象。从而实际的不为零的频率分量应为f=14/2=7Hz,f=38/2=19Hz。

实验6 基于MATLAB的数字滤波器设计

利用MATLAB编程设计一个数字带通滤波器,指标要求如下:

通带边缘频率:

v2-8576b2febc68c436c569d4e3232a8ac8\_b.jpg

v2-876170bd051339c8c610f34406c7e7ee\_b.jpg

,通带峰值起伏:

v2-d0c28bfc819953aa1ce2034aa713e113\_b.jpg

阻带边缘频率:

v2-25ebbe0fe28400d334d352dbe4a75a5a\_b.jpg

v2-c1b049325faa2c75468dcf2e5d9ad1a0\_b.jpg

,最小阻带衰减:

v2-04ec384f14f132affd40aa97b48d0ca9\_b.jpg

。分别用IIR和FIR两种数字滤波器类型进行设计。给出IIR数字滤波器参数和FIR数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。

1.程序

1)IIR滤波器设计

Wp1=0.4*pi;

Wp2=0.7*pi;

Ws1=0.3*pi;

Ws2=0.8*pi;

Wp=[Wp1 Wp2];

Ws=[Ws1,Ws2];

rp=1;rs=40;

Fs=1;

[N,wn]=buttord(Wp/pi,Ws/pi,rp,rs);

[b,a]=butter(N,Wp/pi);

[H,w]=freqz(b,a,500,1000);

subplot(2,1,1);

plot(w*2/Fs,20*log10(abs(H)));

ylabel(‘模值’)

subplot(2,1,2);

plot(w*2/Fs,angle(H)*180/pi);

ylabel(‘角度’);

v2-a359b1a3d9613237ba51c684b1494816\_b.jpg

2)FIR滤波器设计

delta_w=Wp1-Ws1;

N=floor(6.2*pi/delta_w);

Window=hann(N+1);

b=fir1(N,[0.4 0.7],Window);

freqz(b,1);

v2-f74131b56f05fc9ffb04e56700c47e29\_b.jpg

3.讨论说明

1)实现形式

IIR滤波器的形式

IIR滤波器具有如下形式的系统函数:

v2-3bd0b9f71788444c54e0024e214b5a0e\_b.jpg

其中存在k使得

v2-ec671941f8ac55f7fd4c8f015d87999e\_b.jpg

从上式中可以看出,IIR滤波器输出不仅与输入有关,还与前N项输出有关。

FIR滤波器的形式

FIR滤波器的系统函数为:

v2-bd311326cc0bc320b386e5ce86441536\_b.jpg

同样,从上式中可以看出,FIR滤波器的输出只与输入有关。

2)特点

IIR滤波器特点:

(1)h(n)无限长,极点位于有限z平面(

v2-368b82d2ad960121fe237d0fbcaecef5\_b.jpg

)任意位置;

(2)和具有相同性能的FIR滤波器相比,IIR滤波器的阶次较低;

(3)具有非线性相位,这一点从图中可以看出;

(4)递归结构实现,不能用FFT计算;

(5)可借用模拟滤波器丰富的公式和经验设计,这是IIR滤波器最大的优点;

(6)用于设计规格化的选频滤波器。

FIR滤波器特点:

(1)h(n)有限长,极点固定在原点;

(2)和具有相同性能的IIR滤波器相比,阶次高得多;

(3)可严格的线性相位,从图中可以观察到这一结论;

(4)一般采用非递归结构,但有时也采用零极点相互抵消的方式采用递归结构实现;

(5)可用FFT计算,设计借助于计算机;

(6)可设计各种幅频特性和相频特性的滤波器,可以从时域和频域设计(分别对应窗函数法和频率抽样设计法)。

发表评论

表情:
评论列表 (有 0 条评论,438人围观)

还没有评论,来说两句吧...

相关阅读