您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页filter,conv,impz函数的用法及区别

filter,conv,impz函数的用法及区别

来源:保捱科技网
filter,conv,impz函数的用法及区别

filter、conv、impz函数的用法及区别 函数y=filter(p,d,x)实现差分方程的仿真 函数y=conv(x,h)计算卷积

函数y=impz(p,d,N)求系统的冲激响应。 实现差分方程:

filter([1,2],1,[1,2,3,4,5]) 实现 y[k]=x[k]+2*x[k-1]

y[1]=x[1]+2*0=1%(x[1]之前状态都用0) y[2]=x[2]+2*x[1]=2+2*1=4

1.下面程序是用来实现h和x的卷积得,分别用了filter和conv函数,两者函数得出的结果一样。

h = [3 2 1 -2 1 0 -4 0 3]; % impulse response x = [1 -2 3 -4 3 2 1]; % input sequence y = conv(h,x); n = 0:14; subplot(2,1,1); stem(n,y);

xlabel('Time index n'); ylabel('Amplitude'); title('Output Obtained by Convolution'); grid; x1 = [x zeros(1,8)]; y1 = filter(h,1,x1); subplot(2,1,2); stem(n,y1);

xlabel('Time index n'); ylabel('Amplitude'); title('Output Generated by Filtering'); grid;

要实现下式的冲击响应和阶跃响应,可以分别采用三种方法。y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1]。

2. 单位冲激响应:

(1)用filter函数 a1=[1,0.75,0.125]; b1=[1,-1]; n=0:20;

x1=[1 zeros(1,20)]; y1filter=filter(b1,a1,x1); stem(n,y1filter); title('y1filter'); xlabel('x'); ylabel('y'); (2)用conv函数 a1=[1,0.75,0.125]; b1=[1,-1];

x1=[1 zeros(1,10)]; [h]=impz(b1,a1,10); y1conv=conv(h,x1); n=0:19;

stem(n,y1conv,'filled') (3)用impz函数 a1=[1,0.75,0.125]; b1=[1,-1]; impz(b1,a1,21); 3. 单位阶跃响应: (1)用filter函数 a1=[1,0.75,0.125]; b1=[1,-1]; n=0:20; x2=ones(1,21);

y1filter=filter(b1,a1,x2); stem(n,y1filter);

title('y1filter_step'); xlabel('x'); ylabel('y'); (2)用conv函数 a1=[1,0.75,0.125]; b1=[1,-1]; x2=ones(1,21); [h]=impz(b1,a1,20); y1=conv(h,x2);

y1conv=y1(1:21); %为何y1conv要取y1中1:21的值,解释见n1=0:20; %y2→单位阶跃响应→用conv函数中注释stem(n1,y1conv,'filled');

title('y1conv'); xlabel('n'); ylabel('y1[n]'); (3)用impz函数 a=[1,0.75,0.125]; b=1; impz(b,a)

即y=filter(p,d,x)用来实现差分方程,d表示差分方程输出y的系数,p表示输入x的系数,而x表示输入序列。输出结果长度数等于x的长度。

而y=conv(x,h)是用来实现卷级的,对x序列和h序列进行卷积,输出的结果个数等于x的长度与h的长度之和减去1。

y=impz(p,d,N)是用来实现冲击响应的,d和p的定义见filter,N表示冲击响应输出的序列个数。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务