1、许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,1,Matlab语言及其在 电子信息工程中的应用,主讲:许钢 (V1.2),许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,2,第七讲 MATLAB在信号与系统中的应用,一、信号及其表示 二、信号处理工具箱中的常用信号产生函数 三、线性时不变系统的常用表示方法 四、线性时不变系统的时域响应 五、滤波器设计,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,3,第七讲 MATLAB在信号与系统中的应用,一、信号及其表示,1、单位脉冲信号x=zeros(1,N); x(1)=1;
2、%注:Matlab下标从1开始。,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,4,第七讲 MATLAB在信号与系统中的应用,一、信号及其表示,2、单位阶跃信号x=ones(1,N); %注:Matlab下标从1开始。,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,5,第七讲 MATLAB在信号与系统中的应用,一、信号及其表示,3、均匀分布的随机信号x=rand(1,N); %产生0,1上均匀分布的随机信号。,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,6,第七讲 MATLAB在信号与系统中的应用,一、信号及其表示
3、,4、高斯分布的随机信号x=randn(1,N); %产生均值为0,方差为1的高斯分布随机信号(即白噪声信号)。,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,7,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,1、sawtooth函数 产生锯齿波或三角波例: 产生f=50Hz的锯齿波、三角波 Fs=10000; %采样频率 t=0:1/Fs:0.1; %采样间隔1/Fs f=50; %50Hz x1=sawtooth(2*pi*50*t,0); x2=sawtooth(2*pi*50*t,1); x3=sawtooth(2*pi*5
4、0*t,0.5);subplot(311); plot(t,x1); subplot(312); plot(t,x2); subplot(313); plot(t,x3);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,8,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,2、square函数 产生矩形波例:产生50Hz占空比分别为20 和50的矩形波。 Fs=10000; %采样频率 t=0:1/Fs:0.1; %采样间隔1/Fs f=50; %50Hz x1=square(2*pi*50*t,20); x2=square(2*pi*
5、50*t,50);subplot(211); plot(t,x1); subplot(212); plot(t,x2);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,9,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,3、sinc函数 产生sinc波形或sin(t)/(t)波形例: t=linspace(-10,+10,200); x=sinc(t);plot(t,x);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,10,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,(
6、其它信号产生函数自行上机验证!),许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,11,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,4、数字信号的基本运算在Matlab中,向量的下标从1开始,不能去0或负值。因此,在Matlab中对数字信号进行基本运算时,应适当对信号补0。 例1:信号的相加、相乘 oldN1s=-5; oldN1e=4; oldX1=ones(1,(oldN1e-oldN1s+1); oldN2s=0; oldN2e=9; oldX2=ones(1,(oldN2e-oldN2s+1);newNs=min(oldN1
7、s,oldN2s) newNe=max(oldN1e,oldN2e)newX1=zeros(1,(oldN1s-newNs), oldX1, zeros(1,(newNe-oldN1e) newX2=zeros(1,(oldN2s-newNs), oldX2, zeros(1,(newNe-oldN2e)Y1=newX1+newX2 Y2=newX1.*newX2,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,12,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,4、数字信号的基本运算在Matlab中,向量的下标从1开始,不能去0或负
8、值。因此,在Matlab中对数字信号进行基本运算时,应适当对信号补0。 例1:信号的相加、相乘 k=newNs:newNe; subplot(411); stem(k,newX1,.); subplot(412); stem(k,newX2,.); subplot(413); stem(k,Y1,.); subplot(414); stem(k,Y2,.);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,13,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,4、数字信号的基本运算在Matlab中,向量的下标从1开始,不能去0或负值。因
9、此,在Matlab中对数字信号进行基本运算时,应适当对信号补0。 例2:信号的时移 oldN1s=-5; oldN1e=4; oldX1=ones(1,(oldN1e-oldN1s+1); oldX2=(1/2).oldN1s:oldN1e %指数序列k=3; %k0:右移;k0:左移newNs=oldN1s+k; newNe=oldN1e+k;newX2=oldX2;,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,14,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,4、数字信号的基本运算在Matlab中,向量的下标从1开始,不能去
10、0或负值。因此,在Matlab中对数字信号进行基本运算时,应适当对信号补0。 例2:信号的时移 old_k=oldN1s:oldN1e; new_k=newNs:newNe; subplot(211); stem(old_k,oldX2,.); subplot(212); stem(new_k,newX2,.);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,15,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,4、数字信号的基本运算 例3:信号的折叠 oldN1s=-5; oldN1e=4; oldX1=ones(1,(oldN1e
11、-oldN1s+1); oldX2=(1/2).oldN1s:oldN1e %指数序列newNs=-oldN1e; newNe=-oldN1s;newX2=fliplr(oldX2);old_k=oldN1s:oldN1e; new_k=newNs:newNe; subplot(211); stem(old_k,oldX2,.); subplot(212); stem(new_k,newX2,.);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,16,第七讲 MATLAB在信号与系统中的应用,二、信号处理工具箱中的常用信号产生函数,(信号的功率和能量自学!),许钢 2
12、018/12/11,Matlab语言及其在电子信息工程中的应用,17,第七讲 MATLAB在信号与系统中的应用,三、线性时不变(LTI)系统的常用表示方法,1、传递函数表示法在Matlab中,传递函数用分子、分母两个多项式的系数表示,系数为降幂排列。,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,18,第七讲 MATLAB在信号与系统中的应用,三、线性时不变(LTI)系统的常用表示方法,1、传递函数表示法在Matlab中,传递函数用分子、分母两个多项式的系数表示,系数为降幂排列。分子(Numerator) :B=b(1) b(2) b(m+1) 分母(Denomina
13、tor):A=a(1) a(2) b(n+1)例:num=1 0.2 1; den=1 0.5 1;,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,19,第七讲 MATLAB在信号与系统中的应用,三、线性时不变(LTI)系统的常用表示方法,2、零极点模型表示法在Matlab中,增益系数、零点向量、极点向量用三个列向量表示。,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,20,第七讲 MATLAB在信号与系统中的应用,三、线性时不变(LTI)系统的常用表示方法,2、零极点模型表示法在Matlab中,增益系数、零点向量、极点向量用三个列向量表示。
14、增益系数(Gain) :k 零点向量(Zero):z=z1 z2 zn 极点向量(Pole):p=p1 p2 pnsys=zpk(z,p,k) %获得零-极点模型表达式,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,21,第七讲 MATLAB在信号与系统中的应用,三、线性时不变(LTI)系统的常用表示方法,3、状态空间模型表示法 连续系统状态空间方程:离散系统状态空间方程:状态向量:x 输出向量:y 激励向量(输入向量):u在Matlab中,用矩阵A、B、C、D表示系统的状态空间模型。,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,22,第七
15、讲 MATLAB在信号与系统中的应用,三、线性时不变(LTI)系统的常用表示方法,4、线型系统模型的变换函数例1:将以下系统转换为状态空间模型b = 0 2 3; 1 2 1; a = 1 0.4 1; A,B,C,D = tf2ss(b,a),许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,23,第七讲 MATLAB在信号与系统中的应用,三、线性时不变(LTI)系统的常用表示方法,4、线型系统模型的变换函数 例2:将以下系统转换成零-极点模型b = 2 3 0; a = 1 0.4 1; z,p,k = tf2zp(b,a)(自学其它变换函数),许钢 2018/12/
16、11,Matlab语言及其在电子信息工程中的应用,24,第七讲 MATLAB在信号与系统中的应用,四、线性时不变系统的时域响应,1、impulse函数 求连续系统的单位冲击响应。,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,25,第七讲 MATLAB在信号与系统中的应用,四、线性时不变系统的时域响应,*2、impz函数 求离散系统(数字滤波器)的单位冲击响应。 (注:Matlab 7.0不再支持dimpulse函数),也可以用以下方法实现: n=50; imp=1 zeros(1,n-1); y=filter(b,a,imp); stem(y);,许钢 2018/1
17、2/11,Matlab语言及其在电子信息工程中的应用,26,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,1、IIR滤波器设计butter函数:Butterworth滤波器设计 (通带具有最大平坦幅度) 语法格式: b,a = butter(n,Wn) b,a = butter(n,Wn,ftype) b,a = butter(n,Wn,s) b,a = butter(n,Wn,ftype,s) z,p,k = butter(.) A,B,C,D = butter(.)n 滤波器阶数; Wn 归一化截至频率(0Wn1,Wn=1对应Nyquist频率) ftype 滤波器类型(缺省:
18、低通 / high:高通 / bandpass:带通(2n) / stop:带阻(2n)) s 设计模拟滤波器(缺省为设计数字滤波器),许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,27,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,1、IIR滤波器设计(有反馈)butter函数:Butterworth滤波器设计 例1:设计一个6阶的Butterworth滤波器,从一段含噪声语音信号(04kHz,Fs=8kHz)中提取出60500Hz的子带信号。x,Fs,Bit=wavread(test1.wav); %读取语音信号 W1=60/(Fs/2); W2=50
19、0/(Fs/2); %频率归一化 Wn=W1, W2; n=6; b,a=butter(n/2,Wn,bandpass); %获取滤波器参数 y=x+0.1*randn(size(x); %加入随机噪声 z=filter(b,a,y); %滤波。(60Hz4000Hz) subplot(311); plot(x); subplot(312); plot(y); subplot(313); plot(z);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,28,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,1、IIR滤波器设计butter函数:Butterwo
20、rth滤波器设计 例2:从多种频率成分叠加的信号中,提取出某一频带的信号。例如:从500Hz、1kHz、2kHz三种频率成分叠加的信号中,提取出频带为800Hz1.5kHz的信号。要求:阻带衰减不低于10dB,通带衰减不高于3dB。t=0:1/(40000):1/200; x1=1.8*sin(2*pi*500*t+pi/6); x2=2.0*sin(2*pi*1000*t-pi/10); x3=2.2*sin(2*pi*2000*t+pi/12); y=x1+x2+x3;%先选择滤波器阶数,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,29,第七讲 MATLAB在信
21、号与系统中的应用,五、滤波器设计,1、IIR滤波器设计butter函数:Butterworth滤波器设计 例2:从多种频率成分叠加的信号中,提取出某一频带的信号。例如:从500Hz、1kHz、2kHz三种频率成分叠加的信号中,提取出频带为800Hz1.5kHz的信号。要求:阻带衰减不低于10dB,通带衰减不高于3dB。 %先选择滤波器阶数 Fs=5000; %Fs2*2kHz Wp=800 1500/(Fs/2); Ws=600 1700/(Fs/2); Rp=3; Rs=10; n,Wn = buttord(Wp,Ws,Rp,Rs); %再进行滤波器设计 b,a=butter(n,Wn,ba
22、ndpass); z=filter(b,a,y);,subplot(511);plot(x1); subplot(512);plot(x2); subplot(513);plot(x3); subplot(514);plot(y); subplot(515);plot(z);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,30,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,1、IIR滤波器设计cheby1函数:Chebyshev 型滤波器设计 (通带等纹波)cheby2函数:Chebyshev 型滤波器设计 (阻带等纹波)(用法类似butter函数,自行看
23、Help文件!),许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,31,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,1、IIR滤波器设计滤波器的频率响应。 freqs函数:求模拟滤波器的频率响应 freqz函数:求数字滤波器的频率响应例1:绘出模拟低通滤波器的频率响应曲线。 Fs=8000; n=6; Wn=1000/(Fs/2); b,a=butter(n,Wn,s); freqs(b,a);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,32,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,1、IIR滤波器设计滤波器
24、的频率响应。 freqs函数:求模拟滤波器的频率响应 freqz函数:求数字滤波器的频率响应例2:绘出数字低通滤波器的频率响应曲线。 Fs=8000; 采样频率 n=6; Wn=1000/(Fs/2); b,a=butter(n,Wn); l=128; %绘图点数 freqz(b,a,l,Fs);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,33,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,2、FIR数字滤波器设计(无反馈)fir1函数:基于窗函数的FIR滤波器设计 标准频率响应 语法格式: b = fir1(n,Wn) b = fir1(n,Wn,f
25、type) b = fir1(n,Wn,window) b = fir1(n,Wn,ftype,window)high for a highpass filter with cutoff frequency Wn. low stop for a bandstop filter, if Wn = w1 w2. The stopband frequencyrange is specified by this interval. bandpass Wn = w1 w2 w3 w4 w5 . wn DC-1 to make the first band(0 w1) of a multiband fil
26、ter a passband. DC-0 to make the first band of a multiband filter a stopband.(缺省),许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,34,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,2、FIR数字滤波器设计(无反馈)fir1函数:基于窗函数的FIR滤波器设计 标准频率响应 例: 设计一个48阶的带通滤波器,通带(归一化):0.350.65b=fir1(48,0.35 0.65); freqz(b,1,512); %a=1,许钢 2018/12/11,Matlab语言及其在电子信
27、息工程中的应用,35,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,2、FIR数字滤波器设计(无反馈)fir1函数:基于窗函数的FIR滤波器设计 标准频率响应 例: 设计一个65阶的滤波器,通带(归一化):0.250.45、0.650.85b=fir1(65,0.25, 0.45, 0.65, 0.85); freqz(b,1,512);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,36,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,2、FIR滤波器设计(无反馈)fir2函数:基于频率采样的FIR滤波器设计任意频率响应 语法格式: b = f
28、ir2(n,f,m) b = fir2(n,f,m,window) b = fir2(n,f,m,npt) b = fir2(n,f,m,npt,window)f 频率点矢量(属于0 1区间) n 滤波器阶数 m 幅度矢量 npt 指定加窗的点数 windows 指定的窗函数,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,37,第七讲 MATLAB在信号与系统中的应用,五、滤波器设计,2、FIR滤波器设计(无反馈)fir2函数:基于频率采样的FIR滤波器设计任意频率响应 例:设计一个30阶的带通滤波器 n=30; f=0 0.3 0.7 1; m=0 1 1 0; b=fir2(n,f,m); freqz(b,1,512);,许钢 2018/12/11,Matlab语言及其在电子信息工程中的应用,38,第七讲 MATLAB在信号与系统中的应用,(第七讲 完),