1. 程式人生 > >Combine Art and Sciences.

Combine Art and Sciences.

1.直接法(由y(m)=h(0)*x(m)+h(1)*x(m-1)+...+h(N-1)*x(m-n-1));

void fir(short x[], short h[], short y[])
{
  int i,j;
  long long sum;  
 
  for (j = 0; j < N; j++)
  {
    sum = 0;
    for (i = 0; i < n; i++)
      sum += x[j-i] * h[i];
    y[j] = sum >> 15;
  }
}
乘法器使用次數:N*n

2.逆推法:

void fir(short x[], short h[], short y[])
{
  int i,j;
  long sum;  
 
  for (j = 0; j < n; j++)
  {
    for (i = 0; i < N; i++)
    {
      sum = 0;
      sum = h[j] * x[i]
      y[i] += sum >> 15;
    }
  }
}
乘法器使用次數:N*n

3.倒序法:(輸入輸出可以是同一量)

void fir(short x[], short h[], short y[])
{
  int i,j;
  long long sum;  
 
  for (j = N; j > 0; j--)
  {
    sum = 0;
    for (i = n; i > 0; i--)
      sum += x[j-i] * h[i];
    y[j] = sum >> 15;
  }
}