Advertisement
surajvg93

C++ PROG TO FIND N POINT DFT USING LINEAR TRANS. MATRIX

Jun 19th, 2013
869
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.97 KB | None | 0 0
  1. /*
  2. -------------------------------------------------------------------------------------------------
  3.  Assignment No:5
  4.  Title: Compute N Point DFT Using linear transformation matrix.
  5. -------------------------------------------------------------------------------------------------
  6. */
  7.  
  8. #include<conio.h>
  9. #include<iostream.h>
  10. #include<math.h>
  11.  
  12. # define max 50
  13.  
  14. void main()
  15. {
  16.   int i,j,k,n,ch,xr[max]={0},xi[max]={0};
  17.   int x[max]={0},wi[max]={0},wr[max]={0},c[max][max]={0},s[max][max]={0};
  18.   clrscr();
  19.   do
  20.   {
  21.     cout<<"\n--::MENU::---\n";
  22.     cout<<"\n-------------\n";
  23.     cout<<"\n 1.DFT \n";
  24.     cout<<"\n 2.IDFT \n";
  25.     cout<<"\n-------------";
  26.     cout<<"\nEnter your choice:\n";
  27.     cin>>ch;
  28.     switch(ch)
  29.     {
  30.       case 1:
  31.           cout<<"\n Enter your choice of seq u want:";
  32.           cin>>n;
  33.           cout<<"\n Enter values in x(n)\n";
  34.           for(i=0;i<n;i++)
  35.           {
  36.         cout<<"x("<<i<<")=";
  37.         cin>>x[i];
  38.           }
  39.           for(i=0;i<n;i++)
  40.           {
  41.          for(j=0;j<n;j++)
  42.          {
  43.           c[i][j]=s[i][j]=0;
  44.          }
  45.           }
  46.          for(i=0;i<n;i++)
  47.            {
  48.          for(j=0;j<n;j++)
  49.         {
  50.            c[i][j]=cos((2*M_PI*i*j)/n);
  51.            s[i][j]=sin((2*M_PI*i*j)/n);
  52.            s[i][j]=s[i][j]*(-1);
  53.            cout<<c[i][j]<<"+j("<<s[i][j]<<")\t";
  54.         }
  55.           cout<<"\n";
  56.         }
  57.            for(i=0;i<n;i++)
  58.            {
  59.          for(j=0;j<n;j++)
  60.           {
  61.             wr[i]=wr[i]+(c[i][j]*x[j]);
  62.             wi[i]=wi[i]+(s[i][j]*x[j]);
  63.           }
  64.          cout<<"\n";
  65.            }
  66.            cout<<"\nFinal Output Sequence:\n";
  67.            for(i=0;i<n;i++)
  68.            {
  69.             cout<<"\t"<<wr[i]<<"+j("<<wi[i]<<")\n";
  70.            }
  71.            cout<<"\nFinal output Sequence is:\n";
  72.            cout<<"{";
  73.            for(i=0;i<n;i++)
  74.            {
  75.             cout<<wr[i]<<"+j("<<wi[i]<<"),";
  76.            }
  77.            cout<<"}";
  78.            break;
  79.        case 2:
  80.           cout<<"\n Enter your choice of seq u want:";
  81.           cin>>n;
  82.           cout<<"\n Enter values in x(n)\n";
  83.           for(i=0;i<n;i++)
  84.           {
  85.         cout<<"x("<<i<<")=";
  86.         cin>>xr[i]>>xi[i];
  87.           }
  88.           for(i=0;i<n;i++)
  89.           {
  90.          for(j=0;j<n;j++)
  91.          {
  92.           c[i][j]=s[i][j]=0;
  93.          }
  94.           }
  95.          for(i=0;i<n;i++)
  96.            {
  97.          for(j=0;j<n;j++)
  98.           {
  99.            c[i][j]=cos((2*M_PI*i*j)/n);
  100.            s[i][j]=sin((2*M_PI*i*j)/n);
  101.            s[i][j]=s[i][j]*(1);
  102.            cout<<c[i][j]<<"+j("<<s[i][j]<<")\t";
  103.            }
  104.           cout<<"\n";
  105.         }
  106.          for(i=0;i<n;i++)
  107.          {
  108.         wi[i]=wr[i];
  109.          }
  110.          for(i=0;i<n;i++)
  111.           {
  112.         for(j=0;j<n;j++)
  113.          {
  114.             wr[i]=wr[i]+(c[i][j]*xr[j])-(s[i][j]*xi[i]);
  115.             wi[i]=wi[i]+(s[i][j]*xr[j])+(c[i][j]*xi[j]);
  116.          }
  117.          wr[i]=wr[i]/n;
  118.          wi[i]=wi[i]/n;
  119.          cout<<"\n";
  120.           }
  121.            cout<<"\nFinal Output Sequence:\n";
  122.            for(i=0;i<n;i++)
  123.            {
  124.             cout<<"\t"<<wr[i]<<"+j("<<wi[i]<<")\n";
  125.            }
  126.            cout<<"\nFinal output Sequence is:\n";
  127.            cout<<"{";
  128.            for(i=0;i<n;i++)
  129.            {
  130.             cout<<wr[i]<<"+j("<<wi[i]<<"),";
  131.            }
  132.            cout<<"}";
  133.            cout<<"\n";
  134.            break;
  135.     }//case
  136.   }while(ch!=3);
  137.   getch();
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement