Matlab freqz 函数代码说明
% jw -jw -jmw
% jw B(e) b(1) + b(2)e + .... + b(m+1)e
% H(e) = ---- = ------------------------------------
% jw -jw -jnw
% A(e) a(1) + a(2)e + .... + a(n+1)e
代码实现
static public Complex[] Freqz(double[] B, double[] A, double[] X)
{
if (A == null || B == null || X == null)
return null;
Complex[] dst = new Complex[X.Length];
for (int i = 0; i < X.Length; i++)
{
Complex cb = new Complex(0, 0);
Complex ca = new Complex(0, 0);
for (int j = 0; j < B.Length; j++)
{
double m = j * X[i];
Complex c = new Complex(Math.Cos(m), -Math.Sin(m));
cb += B[j] * c;
}
for (int j = 0; j < A.Length; j++)
{
double m = j * X[i];
Complex c = new Complex(Math.Cos(m), -Math.Sin(m));
ca += A[j] * c;
}
dst[i] = cb / ca;
}
return dst;
}