poniedziałek, 19 czerwca 2017

"bit/digit" inverse for mixed radix FFT beta


//"bit/digit" inverse for mixed radix FFT beta

  //author marcin matysek (R)ewertyn.PL
int rd4=4,rd3=3,rd2=2,N1=24*2;

int tab9[24*2]={};
int tab8[24*2]={};

for(int i=0;i<24*2;i++)
{
    tab9[i]=i+1;
}

//dla radix4*radix3*radix2*radix2 N=48 points "bit/digit" inverse

//stage 1
for(int i=0,n=0,p=0;i<N1;i=i+N1/(rd4),n++)
{
    if(n>=rd4){n=0,p=p+N1/(1);}
    for(int j=0,k=0;j<N1/(rd4);j++,k=k+rd4)
    {
      tab8[i+j]=tab9[k+n+p];
    }
}
for(int i=0;i<24*2;i++)
{
    cout<<tab8[i]<<endl;;
}
system("pause");

//stage 2
for(int i=0,n=0,p=0;i<N1;i=i+N1/(rd4*rd3),n++)
{
    if(n>=rd3){n=0,p=p+N1/(rd4);}
    for(int j=0,k=0;j<N1/(rd4*rd3);j++,k=k+rd3)
    {
      tab9[i+j]=tab8[k+n+p];
    }
}
for(int i=0;i<24*2;i++)
{
    cout<<tab9[i]<<endl;;
}
system("pause");

//stage 3
for(int i=0,n=0,p=0;i<N1;i=i+N1/(rd4*rd3*rd2),n++)
{
    if(n>=rd2){n=0,p=p+N1/(rd4*rd3);}
    for(int j=0,k=0;j<N1/(rd4*rd3*rd2);j++,k=k+rd2)
    {
      tab8[i+j]=tab9[k+n+p];
    }
}
for(int i=0;i<24*2;i++)
{
    cout<<tab8[i]<<endl;;
}
//stage 4 (ostatnie stage pomijane zawsze)
system("pause");


 //working version:

    int rx5=5,rx4=4,rx3=3,rx2=2;
    int stg[100]={};

    int nb1,nb2,nb3,nb4;

    stg[0]=1;
    stg[1]=rx5;
    stg[2]=rx3;
    stg[3]=rx2;
    stg[4]=rx4;
    stg[5]=rx3;

for(int i=0;i<N1;i++)
{
    //tab9[i]=tab2[i];
    tab9[i]=i;
}

//dla radix5*radix3*radix2*radix4*radix3 N=360 points "bit/digit" inverse

//stage 5
for(int i=0,n=0,p=0;i<N1;i=i+N1/(stg[5]),n++)
{
    if(n>=stg[5]){n=0,p=p+N1/(stg[0]);}
    for(int j=0,k=0;j<N1/(stg[5]);j++,k=k+stg[5])
    {
      tab8[i+j]=tab9[k+n+p];
    }
}

//stage 4
for(int i=0,n=0,p=0;i<N1;i=i+N1/(stg[5]*stg[4]),n++)
{
    if(n>=stg[4]){n=0,p=p+N1/(stg[0]*stg[5]);}
    for(int j=0,k=0;j<N1/(stg[5]*stg[4]);j++,k=k+stg[4])
    {
      tab9[i+j]=tab8[k+n+p];
    }
}

//stage 3
for(int i=0,n=0,p=0;i<N1;i=i+N1/(stg[5]*stg[4]*stg[3]),n++)
{
    if(n>=stg[3]){n=0,p=p+N1/(stg[0]*stg[5]*stg[4]);}
    for(int j=0,k=0;j<N1/(stg[5]*stg[4]*stg[3]);j++,k=k+stg[3])
    {
      tab8[i+j]=tab9[k+n+p];
    }
}
//stage 2
for(int i=0,n=0,p=0;i<N1;i=i+N1/(stg[5]*stg[4]*stg[3]*stg[2]),n++)
{
    if(n>=stg[2]){n=0,p=p+N1/(stg[0]*stg[5]*stg[4]*stg[3]);}
    for(int j=0,k=0;j<N1/(stg[5]*stg[4]*stg[3]*stg[2]);j++,k=k+stg[2])
    {
      tab9[i+j]=tab8[k+n+p];
    }
}

//system("pause");
for(int i=0;i<N1;i++)
{
  tab11[i]=tab2[tab9[i]];

}
for(int i=0;i<N1;i++)
{
  tab2[i]=tab11[i];
}
////////////////////////////////////////










Brak komentarzy:

Prześlij komentarz