File:FFTexample16T.png
Original file (2,101 × 1,536 pixels, file size: 155 KB, MIME type: image/png)
Summary
Title / Description
|
Application of the FFT operator to the array that approximates the self-Fourier gaussian |
---|---|
Citizendium author & Copyright holder
|
Copyright © Dmitrii Kouznetsov. See below for licence/re-use information. |
Date created
|
9 October 2011 |
Country of first publication
|
Japan |
Notes
|
Comparison of the discrete Fourier transform, shown with red,
of a self–Fourier function , shown with black dots, to the result of the numerical evaluation of the the Fourier operator of array , shown with blue. The discrete representation is performed with number of nodes .
C++ generator of curvesFile fafo.cin should be loaded to the working directory for the compilation of the code below. #include<math.h> #include<stdio.h> #include <stdlib.h> #include <complex> using namespace std; #define z_type complex<double> #define Re(x) x.real() #define Im(x) x.imag() #define RI(x) x.real(),x.imag() #define DB double #define DO(x,y) for(x=0;x<y;x++) void ado(FILE *O, int X, int Y) { fprintf(O,"%c!PS-Adobe-2.0 EPSF-2.0\n",'%'); fprintf(O,"%c%cBoundingBox: 0 0 %d %d\n",'%','%',X,Y); fprintf(O,"/M {moveto} bind def\n"); fprintf(O,"/L {lineto} bind def\n"); fprintf(O,"/S {stroke} bind def\n"); fprintf(O,"/s {show newpath} bind def\n"); fprintf(O,"/C {closepath} bind def\n"); fprintf(O,"/F {fill} bind def\n"); fprintf(O,"/o {.025 0 360 arc C F} bind def\n"); fprintf(O,"/times-Roman findfont 20 scalefont setfont\n"); fprintf(O,"/W {setlinewidth} bind def\n"); fprintf(O,"/RGB {setrgbcolor} bind def\n");} // #include "ado.cin" #include"fafo.cin" // DB F(DB x){DB u=x*x; return u*(-3.+u)*exp(-x*x/2.);} DB F(DB x){ return exp(-x*x/2.);} main(){z_type * a, *b, c; int j,m,n, N=16; FILE *o; double step=sqrt(2*M_PI/N),x,y,u; a=(z_type *) malloc((size_t)((N+1)*sizeof(z_type))); b=(z_type *) malloc((size_t)((N+1)*sizeof(z_type))); //for(j=0;j<N;j++) { x=step*(j-N/2); u=x*x; a[j]=b[j]=(3.+u*(-6.+u))*exp(-x*x/2); } for(j=0;j<N;j++) { x=step*(j-N/2); u=x*x; a[j]=b[j]=F(x); } fft(b,N,1); for(j=0;j<N;j++) printf("%2d %18.15f %18.15f %18.15f %18.15f\n", j, RI(a[j]), RI(b[j]) ); o=fopen("FFTexample16.eps","w"); ado(o,1024,780); #define M(x,y) fprintf(o,"%6.4f %6.4f M\n",0.+x,0.+y); #define L(x,y) fprintf(o,"%6.4f %6.4f L\n",0.+x,0.+y); #define o(x,y) fprintf(o,"%6.4f %6.4f o\n",0.+x,0.+y); fprintf(o,"522 340 translate 100 100 scale\n"); // M(-5,0) L(5,0) M(0,0) L(0,1) fprintf(o,".01 W S\n"); // M(-5,1) L(5,1) M(-5,-1) L(5,-1) for(m=-5;m<6;m++) {M(m,-3) L(m,3)} fprintf(o,".004 W S\n"); for(m=-3;m<4;m++) {M(-5,m) L(5,m)} fprintf(o,".004 W S\n"); fprintf(o,"1 setlinejoin 1 setlinecap\n"); DB *X; X=(DB *) malloc((size_t)((N+1)*sizeof(DB))); DO(j,N){ x=step*(j-N/2); X[j]=x; } DO(j,N){x=X[j]; M(x,0)L(x,.15)} fprintf(o,".01 W S\n"); DO(j,N){x=X[j];y=Re(a[j]); if(j==0)M(x,y)else L(x,y);} fprintf(o,".04 W 0 .4 1 RGB S\n"); DO(j,N){x=X[j];y=Re(b[j]); if(j==0)M(x,y)else L(x,y);} fprintf(o,".04 W 1 0 0 RGB S\n"); // DO(j,N){x=X[j];y=Im(b[j]); if(j==0)M(x,y)else L(x,y);} fprintf(o,".04 W 1 0 0 RGB S\n"); // DO(j,N){x=X[j];y=100.*(Re(b[j])-F(x)); if(j==0)M(x,y)else L(x,y);} fprintf(o,"0.007 W 0 0 .3 RGB S\n"); printf("X[0]=%9.5f step=%9.6f\n",X[0],step); // DO(m,101){x=-5.+.1*m; y=F(x); if(m/2*2==m)M(x,y)else L(x,y);} fprintf(o,".01 W 0 0 0 RGB S\n"); fprintf(o,".01 W 0 0 0 RGB S\n"); DO(m,101){x=-5.+.1*m; y=F(x); o(x,y)} fprintf(o,"showpage\n%cTrailer",'%'); fclose(o); system("epstopdf FFTexample16.eps"); system( "open FFTexample16.pdf"); //these 2 commands may be specific for macintosh getchar(); system("killall Preview");// if run at another operational system, may need to modify free(a); free(b); free(X); } The image is generated in the following way. The lines are drawn in the EPS format by the C++ code below. The result is concerted to PDF format. The labels are added in the latex document below. The result is concerted to the PNG format with default reaolution. |
Other versions
|
If there are other versions of this media on CZ, please list them here. |
Using this image on CZ
|
| , then copy the code below to add this image to a Citizendium article, changing the size, alignment, and caption as necessary.
Please send email to manager A T citizendium.org .
Licensing
This media, FFTexample16T.png, is licenced under the Creative Commons Attribution 3.0 Unported License
You are free:
To Share — To copy, distribute and transmit the work; To Remix — To adapt the work.
Under the following conditions:
Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
For any reuse or distribution, you must make clear to others the licence terms of this work (the best way to do this is with a link to this licence's web page). Any of the above conditions can be waived if you get permission from the copyright holder. Nothing in this licence impairs or restricts the author's moral rights.
Read the full licence.
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 19:57, 11 March 2022 | 2,101 × 1,536 (155 KB) | Maintenance script (talk | contribs) | == Summary == Importing file |
You cannot overwrite this file.
File usage
The following page uses this file: