函数说明(建议参考官方文档)
- 利用matlab求解差分方程的解,调用函数filter
y = filter(p,d,x)
[y,sf] = filter(p,d,x,si)
- 第一种形式假定在零初始条件下,用系数向量p和d描述的系统处理输入向量x,从而得到输出向量y
- 第二种形式允许在向量si中包含内部向量si[n]的非零初始条件
y [ n ] + 0.6 y [ n − 1 ] − 0.5 y [ n − 2 ] − 0.6 y [ n − 3 ] = 0.9 x [ n ] − 0.5 x [ n − 1 ] + 0.4 x [ n − 2 ] + 0.3 x [ n − 3 ] 当 输 入 序 列 x [ n ] = δ [ n ] 时 的 输 出 结 果 为 y [ n ] , n ∈ [ 0 , 50 ] y[n] + 0.6y[n-1] - 0.5y[n-2] - 0.6y[n-3] = \\ 0.9x[n] - 0.5x[n-1] + 0.4x[n-2] + 0.3x[n-3]\\ 当输入序列 x[n]=\delta[n]时的输出结果为y[n],n\in[0,50] y[n]+0.6y[n−1]−0.5y[n−2]−0.6y[n−3]=0.9x[n]−0.5x[n−1]+0.4x[n−2]+0.3x[n−3]当输入序列x[n]=δ[n]时的输出结果为y[n],n∈[0,50]
N = 51;
a = [0.9 -0.5 0.4 0.3];
b = [1 0.6 -0.5 -0.6];
x = [1 zeros(1,N-1)];
k = 0:1:N-1;
y = filter(b,a,x);
stem(k,y);
xlabel('n');
ylabel('幅度');
代码来自南京邮电大学《数字信号处理》,仅做学习使用