⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fir2lift.c

📁 FIR2LIFT is a program to factor a wavelet FIR filter pair into lifting steps.
💻 C
字号:
/*
FILE : FIR2LIFT.C

Factor a wavelet FIR filter pair into all possible combinations of
lifting steps.

(C) C. Valens

Created     : 24/09/1999
Last update : 27/09/1999
*/


#include "redir.h"
#include "zpoly.h"
#include "factor.h"

#include <stdlib.h>
#include <stdio.h>


zpoly_pair CDF42(void)
{
  zpoly_pair fir = {NULL,NULL};

  fir.p1 = zpoly_add_element_to(fir.p1,-3,3);
  fir.p1 = zpoly_add_element_to(fir.p1,-2,-12);
  fir.p1 = zpoly_add_element_to(fir.p1,-1,5);
  fir.p1 = zpoly_add_element_to(fir.p1,0,40);
  fir.p1 = zpoly_add_element_to(fir.p1,1,5);
  fir.p1 = zpoly_add_element_to(fir.p1,2,-12);
  fir.p1 = zpoly_add_element_to(fir.p1,3,3);
  zpoly_scale(fir.p1,0.03125);

  fir.p2 = zpoly_add_element_to(fir.p2,-3,1);
  fir.p2 = zpoly_add_element_to(fir.p2,-2,-4);
  fir.p2 = zpoly_add_element_to(fir.p2,-1,6);
  fir.p2 = zpoly_add_element_to(fir.p2,0,-4);
  fir.p2 = zpoly_add_element_to(fir.p2,1,1);
  zpoly_scale(fir.p2,0.0625);

  return fir;
}


zpoly_pair DD22(void)
{
  zpoly_pair fir = {NULL,NULL};

  fir.p1 = zpoly_add_element_to(fir.p1,-2,-0.125);
  fir.p1 = zpoly_add_element_to(fir.p1,-1,0.25);
  fir.p1 = zpoly_add_element_to(fir.p1,0,0.75);
  fir.p1 = zpoly_add_element_to(fir.p1,1,0.25);
  fir.p1 = zpoly_add_element_to(fir.p1,2,-0.125);

  fir.p2 = zpoly_add_element_to(fir.p2,-2,0.25);
  fir.p2 = zpoly_add_element_to(fir.p2,-1,-0.5);
  fir.p2 = zpoly_add_element_to(fir.p2,0,0.25);

  return fir;
}


int main(int argc, char *argv[])
{
  zpoly_pair fir;
  factor_list *fl;

  printf("   FIR2LIFT, (C) C. Valens, 1999.\n");
  printf("   Factor a wavelet FIR filter pair into lifting steps.\n\n");

  if ((argc<2) || (argc>3)) {
    redir_open(0,0);
  }
  else if (argc==2) {
    redir_open(argv[2],0);
  }
  else if (argc==3) {
    redir_open(argv[2],argv[3]);
  }

  redir_printf("*** FIR2LIFT, (C) C. Valens, 1999.\n\n");

  fir = DD22();
  redir_printf("*** h(z) = [");
  zpoly_write(fir.p1);
  redir_printf("]\n");
  redir_printf("*** g(z) = [");
  zpoly_write(fir.p2);
  redir_printf("]\n\n");

  fl = factor_this_baby_now(fir);
  gimme_my_lifting_steps(fl);
  
  redir_printf("\n*** Done.\n");

  redir_close();

  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -