Matlab中filter、conv、impz函数的区别

在MATLAB中,可以用函数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

 

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

h = [3 2 1-2 1 0 -4 0 3];      % impulse response

x = [1 -23 -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 = [xzeros(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]。


b.  单位冲激响应:

(1)用filter函数 

a1=[1,0.75,0.125];

b1=[1,-1];

n=0:20;

x1=[1zeros(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=[1zeros(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);


c.  单位阶跃响应:

 (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表示冲击响应输出的序列个数。


摘自:http://blog.sina.com.cn/s/blog_4a018d080100ikss.html

  • 18
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值