Matlab中filter、conv、impz函数的区别
在MA TLAB中,可以用函数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 -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);