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];
}
////////////////////////////////////////
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz