数字信号处理及MATLAB实现 李辉主编课本例题MATLAB实现

更新时间:2024-04-24 02:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章

例1- 离散时间信号产生。编写程序产生下列基本脉冲

(1)单位脉冲序列:起点ns,终点ne,在n0处有一单位脉冲(ns≤n0≤ne)。

(2)单位阶跃序列:起点ns,终点ne,在n0前为0,在n0处及以后为1(ns≤n0≤ne)。 (3)实数指数序列:x3?(0.9)n (4)正弦序列:x4?sin(n)

程序如下:

ns=0;ne=15;n0=5;

n1=ns:ne;x1=[(n1-n0)==0]; %n2=ns:ne;x2=[(n2-n0)>=0]; %n3=ns:ne;x3=(0.9).^n3; %n4=ns:ne;x4=sin(n4); %subplot(2,2,1),stem(n1,x1); title('单位脉冲序列')

subplot(2,2,2),stem(n2,x2); title('单位阶跃序列')

subplot(2,2,3),stem(n3,x3); title('实数指数序列')

subplot(2,2,4),stem(n4,x4); title('正弦序列')

运行结果如图1-所示。

单位脉冲序列 单位阶跃序列 实数指数序列 正弦序列 单位脉冲序列10.80.60.40.2005101510.80.60.40.200单位阶跃序列51015实数指数序列10.80.600.40.20051015-0.5-110.5正弦序列051015

图1- 基本脉冲序列

例1- 动态演示信号序列x1?0.6n??(0?n?20),x2?u(n)??(0?n?20)卷积和的过程 程序如下: clear

len_x1=20; len_x2=20;

nx1=0:len_x1-1; %建立x1的时间向量 x1=0.6.^nx1; %建立x1序列

%len_x1=length(nx1); %取x1时间向量的长度 nx2=0:len_x2-1; %x2的时间向量

%len_x2=length(nx2); %取x2的时间向量的长度 x2=ones(1,len_x2); %建立x2序列 lmax=max(len_x2,len_x1); %求最长的序列

if len_x2>len_x1 nx2=0;nx1=len_x2-len_x1; %若x2比x1长,对x1补nx1个0 elseif len_x2

lt=lmax; %先将x2补得与x1同长,再将两边补最大长度的0 u=[zeros(1,lt),x2,zeros(1,nx2),zeros(1,lt)];

t1=(-lt+1:2*lt); %先将x1补得与x2同长,再将左边补2倍最大长度的0

x1=[zeros(1,2*lt),x1,zeros(1,nx1)]; %将x1左右反折 hx1=fliplr(x1); N=length(hx1);

y=zeros(1,3*lt); %将y存储单元初始化 for k=0:2*lt %动态演示绘图

p=[zeros(1,k),hx1(1:N-k)]; %使hx1向右循环移位

y1=u.*p; %使输入和翻转移位的脉冲过渡函数逐项相乘 yk=sum(y1); %相加

y(k+lt+1)=yk; %将结果放入数组y subplot(4,1,1);stem(t1,u); subplot(4,1,2);stem(t1,p); subplot(4,1,3);stem(t1,y1);

subplot(4,1,4);stem(k,yk); %通过图形表示每一次卷积的结果

axis([-10,50,0,5]);hold on %在图形窗口上保留每一次运行的图形结果 pause(0.5); %停滞0.5秒 end

第2章

例2- 求以下序列的z变换:

x1(n)?an,x2(n)?n?1,x3(n)?n(n?1),x4(n)?ej?n 3程序如下:

syms a z n w %把字符a z n w定义为基本的符号对象 x1=a^n;X1=ztrans(x1) %求x1的z变换 x2=n-1; X2=ztrans(x2)

x3=(n*(n-1))/3;X3=ztrans(x3) x4=exp(j*w*n);X4=ztrans(x4) 运行结果如下: X1 =z/a/(z/a-1)

X2 =z/(z-1)^2-z/(z-1)

X3 =1/3*z*(z+1)/(z-1)^3-1/3*z/(z-1)^2 X4 =z/exp(i*w)/(z/exp(i*w)-1)

例2-求下列函数的z的反变换:

X1(z)?zzz,X2?, X(z)?332z?1(1?z)(z?a)程序如下:

syms n z a %把a n z定义为基本的符号对象 X1=z/(z-1); x1=iztrans(X1) %求X1的z的反变换 X2=z/(1-z)^3; x2=iztrans(X2) X3=z/(z-a)^2; x3=iztrans(X3) 运行结果如下: x1 =1

x2 =1/2*n-1/2*n^2 x3 =a^n*n/a

例2-已知X(z)?11?3z?2z?1?2,z?2,试用部分分式法求z的反变换,并画x(n)。

程序如下: b=[1,0,0]; a=[1,-3,2];

[r p c]=residuez(b,a); %把b(z)/a(z)展开成部分分式 N=15; n=0:N-1;

x=r(1)*p(1).^n+r(2)*p(2).^n;

stem(n,x); title('x(n)');

在命令窗口中将显示: r = 2 -1 p = 2 1 c = 0

所以多项式分解后表示为:X(z)?运行结果如下:

21?

1?2z?11?z?13.5x 104x(n)32.521.510.5002468101214

图2- 部分分式法求x(n)图

例2- 研究z右半平面的实数极点对系统响应的影响。已知系统的零-极点模型分别为:

H1(z)?zzz,H2(z)?,H3?

z?0.5z?1z?2求这些系统的零极点分布图以及系统的冲激响应,判断系统的稳定性。

程序如下:

z1=[0]';p1=[0.5]';k=1; %输入零极点增益模型零点向量z、极点向量p和增益系数k [b1,a1]=zp2tf(z1,p1,k); %求系数传递函数(tf)模型中分子、分母多项式的系数向量 subplot(3,2,1),zplane(z1,p1); %由零点和极点向量绘制零极点分布图 ylabel('极点在单位圆内');

subplot(3,2,2),impz(b1,a1,15); %绘制数字系统的冲激响应,取样点数为15 z2=[0]';p2=[1]';

[b2,a2]=zp2tf(z2,p2,k);

subplot(3,2,3),zplane(z2,p2); ylabel('极点在单位圆上'); subplot(3,2,4),impz(b2,a2,15);

z3=[0]';p3=[2]';

[b3,a3]=zp2tf(z3,p3,k);

subplot(3,2,5),zplane(z3,p3); ylabel('极点在单位圆外'); subplot(3,2,6),impz(b3,a3,15); 运行结果如下:

1Amplitude极点在单位圆内10-1-210-1-210-1-101Real Part2AmplitudeAmplitude0.5-10Real Part12010510n (samples)极点在单位圆上0.5-10Real Part120204x 10510n (samples)极点在单位圆外100510n (samples)

图2- 右半平面极点对系统响应影响图

由MATLAB结果图可见,这3个系统的极点均为实数且处于z平面的右半平面。当极点处于单位圆内,系统的冲激响应曲线随着频率的增大而衰减;当极点处于单位圆上时,系统的冲击响应曲线为等幅振荡;当极点处于单位圆外时,系统的冲击响应曲线随着频率的增大而发散。

第3章

?2(n)?[0,1,1,2,2,0],动态演示它?1(n)?[1,2,1,1,0,0],x例3-已知两个周期序列分别为x?(n)。 们的周期卷积和y程序如下:

clear

n=0:5; %建立时间向量序列n xn1=[0,2,1,1,0,0]; %建立xn1的序列主值 xn2=[0,1,1,0,0,0]; %建立xn2的序列主值 N=length(xn1); nx=(-N:3*N-1);

hxn2=xn2(mod(nx,N)+1); %将xn2序列周期严拓

u=[zeros(1,N),xn2,zeros(1,2*N)]; %按xn2周期严拓后的长度重建主值信号 xn12=fliplr(xn1); %将xn1做左右反折

hxn1=xn12(mod(nx,N)+1); %将xn1反折后的序列周期严拓 N1=length(hxn1);

y=zeros(1,4*N); %将y存储单元初始化 for k=0:N-1 %动态演示开始

p=[zeros(1,k+1),hxn1(1:N1-k-1)]; %使hxn1向右循环移位

y1=u.*p; %使输入和翻转移位的脉冲过渡函数相乘 yk=sum(y1); %相乘之后再相加 y([k+1,k+N+1,k+2*N+1,k+3*N+1])=yk; %将结果放入数组y subplot(4,1,1);stem(nx,hxn2);

axis([-1,3*N,0,1.1]);ylabel('x2(n)'); subplot(4,1,2);stem(nx,p);

axis([-1,3*N,0,3.3]);ylabel('x1(n)');

subplot(4,1,3);stem(k,yk); %作图表示主值区每一次卷积的结果

axis([-1,3*N,0,6.6]);hold on %在图形窗口上保留每一次运行的图形结果 ylabel('主值区');

subplot(4,1,4);stem(nx,y);

axis([-1,3*N,0,6.6]);ylabel('卷积结果');

pause(3); %停滞3秒 end

例3-求矩形序列的DTFT。 程序如下: N=8;

xn=ones(1,N);

n=0:N-1;

w=linspace(0,2*pi,200); %将[0,2π]频率区间分割成200份 X=xn*exp(-j*n'*w); %离散时间的傅里叶变换 subplot(3,1,1),stem(n,xn,'k'); ylabel('x(n)');

subplot(3,1,2),plot(w,abs(X),'k'); %显示幅度谱 axis([-2*pi,2*pi,1.2*min(abs(X)),1.2*max(abs(X))]); ylabel('幅度谱');

subplot(3,1,3),plot(w,angle(X),'k'); %显示相位谱 axis([-2*pi,2*pi,1.2*min(angle(X)),1.2*max(angle(X))]); ylabel('相位谱'); 运行结果如下:

1x(n)0.508幅度谱0123456764202123456相位谱0-20123456

图3- 矩形序列的DTFT

例3-求矩形序列的DFT,并与上例进行比较。

程序如下: N=8;

xn=ones(1,N);

n=0:N-1; k=0:N-1;

Xk=xn*exp(-j*2*pi/N).^(n'*k); %离散傅里叶变换 L=50;

yn=[xn,zeros(1,L-8)]; %将x(n)有限长序列补足至50 m=0:L-1; t=0:L-1;

Yk=yn*exp(-j*2*pi/L).^(m'*t); %离散傅里叶变换 subplot(2,2,1),stem(n,xn); %绘制原信号序列 title('x(n)');

subplot(2,2,2),stem(m,yn); title('y(n)');

subplot(2,2,3),stem(k,abs(Xk)); %傅里叶变换所对应的 图形 title('|X(k)|');

subplot(2,2,4),stem(t,abs(Yk)); title('|Y(k)|'); 运行结果如下:

x(n)10.80.60.40.20024|X(k)|86420864206810.80.60.40.2001020304050y(n)|Y(k)|0246801020304050

图3- 矩形序列的DFT

序列的DFT是DTFT周期内的等间隔采样,上图首先给出8点矩形序列的DTFT,然后给出通过补零加长为50点后的DTFT。通过对比发现补零后,频谱的采样间隔变密,保留了更多的原信号的频谱特征。

第4章

例4-:已知一个8点的时域非周期离散?(n?n0)信号和阶跃信号u(n?n0),n0?2,用

N?32点进行FFT变换,作其时域信号图及信号频谱图。

程序如下:

n0=2;ns=0;ne=7;N=32; n=ns:ne;

W1=[(n-n0)==0]; %建立时间信号 W2=[(n-n0)>=0];

i=0:N-1; %频率样点自0开始 y1=fft(W1,N);

Aw1=abs(y1); %求幅度谱 y2=fft(W2,N); Aw2=abs(y2);

subplot(2,2,1);stem(n,W1); subplot(2,2,2);stem(n,W2); subplot(2,2,3);plot(i,Aw1); subplot(2,2,4);plot(i,Aw2); 运行结果如下:

10.80.60.40.200246810.80.60.40.200246821.510.50642010203000102030

图4- 单位脉冲序列和单位阶跃信号及其频谱

例4- 用FFT计算下列连续时间信号的频谱,并讨论Ts和N值对频谱特性的影响。

xa(t)?sint?sin1.1t?sin1.18t

程序如下:

T0=[1,0. 5,0. 25,0. 25]; %输入不同的Ts值 N0=[256,256,256,1024]; %输入不同的N值 for m=1:4;

Ts=T0(m);N=N0(m); %赋Ts和N值 n=0:N-1;

D=2*pi/(Ts*N); %计算模拟频率分辨率 xa= sin(n*Ts)+sin(1.1*n*Ts)+sin(1.18*n*Ts); k=floor(-(N-1)/2:(N-1)/2); Xa=Ts*fftshift(fft(xa,N)); [m,Xa(1)]

subplot(2,2,m);plot(k*D,abs(Xa),'k');

axis([0,3,1.1*min(abs(Xa)),1.1*max(abs(Xa))]); end

Ts=1,N=256120100806040200.51Ts=0.25,N=256302010120100806040200.511.50.511.51.550403020100.51Ts=0.25,N=10241.5Ts=0.5,N=256

图4- FFT时不同Ts和N值对频谱特性的影响

Ts和N,从图中可以看出,相同的N下,Ts越大,所取的时域信号长度T?NTs越

长,则频率分辨率越高;相同的Ts下,N越大,则在频域抽样点数增加,则频率分辨率越高。

第5章

4?2z?1?7z?2?2z?3例5-已知系统的传递函数为H(z)?,将其从直接型转换为

1?1.5z?1?0.5z?2?0.75z?3级联型和并联型。

从直接型转换为级联型,就是将系统传递函数模型(tf)转换为二次分式(sos)模型;从直接型转换为并联型,就是将系统的传递函数模型转换为极点留数(rpk)模型。 程序如下:

b=[4,-2,7,-2]; %输入系统函数b参数 a=[1,-1.5,0.5,-0.75]; %输入系统函数a参数 [sos,g]=tf2sos(b,a) %由直接型转换为级联型 [r,p,k]=residuez(b,a) %由直接型转换为并联型 运行结果如下: sos =

1.0000 -0.2959 0 1.0000 -1.5000 0 1.0000 -0.2041 1.6896 1.0000 -0.0000 0.5000 g = 4 r =

4.2424 -1.4545 + 1.6713i -1.4545 - 1.6713i p =

1.5000 0.0000 + 0.7071i 0.0000 - 0.7071i k =

2.6667

由sos和g的数据,可以写出级联型的表达式

1?0.2959z?11?0.2041z?1?1.6896z?2H(z)?4??

1?1.5z?11?0.5z?2由r、p、k的数据,可以列写出并联型的表达式

H(z)?

4.2424?1.4545?1.6713i?1.4545?1.6713i???2.6667 ?1?1?11?1.5z1?0.7071iz1?0.7071iz?1例5-已知一个FIR系统的传递函数为H(z)?4(1?2z将其从?3z?2)(1?4z?1?5z?2),

级联型转换为横截型。

程序如下:

sos=[1,-2,3,1,0,0;1,-4,5,1,0,0]; %输入sos参数 g=4; %输入g参数

[b,a]=sos2tf(sos,g) %由级联型转换为直接型 运行结果如下: b =

4 -24 64 -88 60 a =

1 0 0 0

由a和b的数据,可以写出级联型的表达式

H(z)?4?24z?1?64z?2?88z?3?60z?4

第6章

例6- 采用MATLAB直接法设计一个巴特沃斯型数字带通滤波器,要求:

?p1?0.4?,?p2?0.6?,Rp?1dB;?s1?0.2?,????s2?0.8?,As?10dB。描绘滤波器

归一化的绝对和相对幅频特性、相频特性、零极点分布图,列出系统传递函数 程序如下:

ws1=0.2;ws2=0.8; %数字滤波器的阻带截止频率 ws=[ws1,ws2];

wp1=0.4;wp2=0.6; %数字滤波器的通带截止频率 wp=[wp1,wp2];

Rp=1;As=10; %输入滤波器的通阻带衰减指标 [n,wc]=buttord(wp,ws,Rp,As) %计算阶数n和截止频率

[b,a]=butter(n,Rp,wc) %直接求数字带通滤波器的系数 [H,w]=freqz(b,a); %求数字系统的频率特性 dbH=20*log10((abs(H)+eps)/max(abs(H))); %化为分贝值 subplot(2,2,1),plot(w/pi,abs(H)); title('幅度相应');

subplot(2,2,2),plot(w/pi,angle(H)); title('相位相应');

subplot(2,2,3),plot(w/pi,dbH); title('幅度相应(dB)'); subplot(2,2,4),zplane(b,a); title('零极点图'); 程序执行结果: n = 2

wc = 0.2863 0.7137

b = 0.2292 0 -0.4584 0 0.2292 a = 1.0000 -0.0000 0.2675 -0.0000 0.1843 传递函数为

0.2292?0.4584z?2?02292z?4H(z)?

1?0.2675z?2?0.1843z?4图形如下图所示

幅度相应1420.50-2000.5幅度相应(dB)20011-40相位相应0.5零极点图1Imaginary Part00.50-0.5-122-200-40000.51-1-0.500.5Real Part1

图6- 巴特沃斯型数字带通滤波器设计

第7章

例7- 用矩形窗设计一个FIR数字滤波器,要求:N=16,截止频率为?c?0.5?,绘制理想和实际滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线。 程序如下:

wc=0.5pi; %输入设计指标 N=16

tao=(N-1)/2; n=0:N-1; m=n-tao+eps;

hd=sin(wc*m)./(pi*m);

windows=(boxcar(N))'; %使用矩形窗,将列向量变为行向量 b=hd.*windows; %求FIR系统函数系数 [H,w]=freqz(b,1); %求解频率特性 dbH=20*log10((abs(H)+eps)/max(abs(H))); %化为分贝值

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

axis([0,N,1.1*min(hd),1.1*max(hd)]);title('理想脉冲响应'); xlabel('n');ylabel('hd(n)');

subplot(2,2,2),stem(n,windows); axis([0,N,0,1.1]);title('窗函数特性'); xlabel('n');ylabel('wd(n)'); subplot(2,2,3),stem(n,b);

axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应'); xlabel('n');ylabel('h(n)');

subplot(2,2,4),plot(w/pi,dbH);

axis([0,1,-80,10]);title('幅度频率响应');

xlabel('频率(单位:\\pi)');ylabel('H(e^{j\\omega})'); set(gca,'XTickMode','manual','XTick',[0,wc/pi,1]);

set(gca,'YTickMode','manual','YTick',[-50,-20,-3,0]);grid 运行结果如下:

理想脉冲响应0.40.30.20.1005101500510151窗函数特性wd(n)n实际脉冲响应hd(n)0.5n幅度频率响应0-30.40.20.1005n1015H(ej?)0.3-20-50h(n)00.5频率(单位:?)1

图6- FIR数字带通滤波器设计

13.FDATool工具

FDATool是MATLAB中的一个图形化的滤波器设计与分析工具。利用FDATool这一工具,我们可以进行FIR和IIR数字滤波器的设计,并且能够显示数字滤波器的幅频响应、相位响应以及零极点分布图等。产生的数字滤波器系数在存储为文件后,可以直接提供给DSP程序代码调试工具—CCS或DSP存储器,以完成实际的数字滤波器的调试程序,从而实现实际的滤波器。和在MATLAB命令窗口中输入命令设计滤波器相比,利用FDATool工具设计滤波器更加直观、方便。

在MATLAB命令窗口中输入命令“fdatool”将打开FDATool工作界面,如图1所示:

图1 FDATool工作界面

下面通过一个实例来介绍FDATool工具的使用方法。

例子:已知数据采样频率为1000Hz,现要设计一6阶的巴特沃斯低通滤波器,截止频率为200Hz,求其幅度响应、相位响应、脉冲响应、零极点图、滤波器系数等。 具体步骤如下

(1)根据任务首先确定滤波器种类、类型等指标。本题应选用Lowpass、IIR、巴特沃思滤波器。

(2)根据指标给定的阶数【Filter Order】一栏中应选择【Specify Order】,并输入滤波器的阶数,输入采样频率、截止频率等指标。

(3)指标输入完后,按【Design Filter】进行滤波器设计,将显示图2的结果

(4)观察滤波器的其它响应形式。利用菜单按钮可以观察其幅度响应、相位响应、脉冲响应、零极点图、滤波器系数等。图3给出了滤波器的幅度响应、相位响应、冲激响应、和零极点图。

显示当前滤波器的幅度响应。 显示当前滤波器的相位响应。

同时显示当前滤波器的幅度和相位响应。 显示当前滤波器的群延迟响应。 显示当前滤波器的相延迟。 显示当前滤波器的脉冲响应。 显示当前滤波器的阶跃响应。 显示当前滤波器的零极点的位置。 列出了当前滤波器的系数。 列出了当前滤波器的相关信息。

图2 滤波器设计结果

Magnitude Response (dB)0-100-200-300-400-500Phase (radians)Magnitude (dB)Phase Response0-2-4-6-8-1000.10.20.3Frequency (kHz)0.400.10.20.3Frequency (kHz)0.4

a)幅度响应 b)相位响应

Impulse Response0.60.4AmplitudePole/Zero Plot1Imaginary Part0.50-0.5-10.20-0.2601020Time (mseconds)30-1.5-1-0.500.5Real Part11.5

c)冲激响应 d)零极点图

图3 滤波器的其它响应形式

a)幅度响应b)相位响应c)冲激响应d)零极点图

利用以上例子,我们可以在MATLAB命令窗口中输入命令来设计滤波器,并和使用fdatool工具设计的结果进行对比。

MATLAB中设计滤波器及查看相应特性的命令如下:

滤波器系数: [b,a]=butter(6,200/1000*2) %Wn=fc/(Fs/2) 幅度响应、相位响应: freqz(b,a,128,1000) 冲激响应: impz(b,a) 零极点图: zplane(b,a)

在MATLAB命令窗口中输入上述命令后,MATLAB将给出所要设计的滤波器的系数并绘制出该滤波器的幅度响应、相位响应、冲激响应和零极点图,图形结果如图4所示。从图中可以看出使用Matlab命令设计的滤波器特性和使用fdatool工具设计出来的滤波器特性结果基本一致。

Mag-150-200-2500100200300400Frequency (Hz)5000Phase (degrees)0Magnitude (dB)-50-100-150-200-2500100200300400Frequency (Hz)500-200-400-6000100200300400Frequency (Hz)500

a)幅度响应 b)相位响应

0Impulse Responseed ueitsla Am(degrees)hPp0.6-200Imaginary Part10.50-0.5-1-10.4-4000.20-600-0.20100200300400Frequency (Hz)102030n (samples)500

-0.500.5Real Part1

c)冲激响应 d)零极点图

图4 Matlab命令设计的滤波器特性

a)幅度响应b)相位响应c)冲激响应d)零极点图

14.SPTool工具

SPTool是MATLAB工具箱中自带的交互式图形信号处理工具,它包含了信号处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览。从工程角度看SPTool是一个非常实用的工具。以下我们将结合例子来具体说明该工具的使用方法。

在MATLAB命令窗口中输入“sptool”,将打开SPTool工作界面,如图5所示: 下面通过一个实例说明SPATool工具的使用方法,

例子:系统采样频率为1024Hz,产生100Hz和400Hz的合成正弦波,观察信号波形和频谱;设计滤波器去除400Hz分量,观察滤波后的信号波形和频谱。

(1)在MATLAB命令窗口中输入“sptool”,打开SPTool工作界面,如图5所示。 (2)首先要产生一个100Hz和400Hz的合成正弦波,可以通过如下程序得到。 >> Fs=1024;

>> t=0:1/Fs:1;

>> x=sin(400*2*pi*t)+sin(100*2*pi*t);

图5 SPTool工作主界面

(3)在SPTool中导入所产生的和信号。打开SPTool工作界面,选择File菜单下的Import,弹出如图6所示界面,我们选择从工作空间导入,直接选中【Workspace Contents】中已有的信号变量和采样频率变量,如本例中的x和Fs。再点击窗口右边的“——>”按钮导入数值,信号名称为默认的sig1。完成后点击【OK】,即完成了信号数据和采样频率的导入。

图6 数据导入工作窗口

(4)选中所要查看的和信号sig1[vector],点击View即可查看所产生的和信号的波

形,如图7所示。

图7 合成正弦波波形图

(5)在SPTool主窗口中点击Create将弹出频谱图查看窗口,同时在SPTool主窗口的Spectra一列将出现一个名为spect1[auto]的频谱信号(如图8)。参数选择默认设置,单击频谱查看窗口上的Apply按钮产生相应的信号频谱图(如图9)。

图8 Spectra列表中显示相应的频谱信号

图9 信号频谱图查看窗口

(6)接下来是设计低通滤波器。可以新建一个滤波器也可以在原有的滤波器修改,这里选择在已有的滤波器上做修改。选中FIRbp[design]点击Edit即可修改滤波器。如图10设置滤波器参数。采样频率为1024;滤波器类型选择低通滤波器;通带临界频率Fp设为200Hz,通带波纹设为5dB;阻带临界频率设为300Hz,阻带衰减设为60dB。最后点击Apply。完成后关闭设计窗口。

图10 滤波器设计窗口

(7)使信号sig1[vector]和前面所设计的滤波器FIR bp[design]处于被选中状态,单击SPTool主窗口中的Apply按钮将弹出Apply Filter对话框(如图11)。输出信号一栏中可以填写输出信号的名称,这里用的是默认的sig2。最后点击OK。

图11 Apply Filter对话框

(8)上一步结束后,在SPTool主窗口中Signals一列中会增加一个滤波后的信号sig2[vector],点击相应的View按钮将看到该信号的波形图(如图12)。

图12 波后的信号波形

(9)同步骤(5)一样在Spectra列表中创建滤波后信号sig2[vector]的频谱信号并查看滤波后信号的频谱图(如图13)。

图13 滤波后信号的频谱图

本文来源:https://www.bwwdw.com/article/61rp.html

Top