![]() |
![]() |
|
| BBS |
| FFT¤ò¤ä¤ê¤¿¤¤¤Î¤Ç¤¹¤¬¡¢ | ||
| ||
|
WINDOWS95²¼¤ÇVC++6¤Ç»È¤Ã¤Æ¤¤¤Þ¤¹¡£ 0.1Éô֤Ë4096¥µ¥ó¥×¥ë¥Ç¡¼¥¿¤¢¤ëÇÈ·Á¥Ç¡¼¥¿ ¡ÊXR[0]¤«¤éXR[4095]¤Þ¤Ç¡Ë¤òFFT¤·¤¿¤¤¤Î¤Ç¤¹¤¬¡¢¡¢¡¢ ¡¡¡·ë²Ì¤¬¡¢¤É¤¦¤â¤·¤Ã¤¯¤ê¹Ô¤¤Þ¤»¤ó¡£ ¡¡¡¡¥Ð¥¿¥Õ¥é¥¤±é»»¤¬¤¦¤Þ¤¯¹Ô¤Ã¤Æ¤¤¤Ê¤¤¤»¤¤¤«¡¢ ¡¡¡¡¿·¤¿¤Ë»»½Ð¤µ¤ì¤¿ ¡¡¡¡XR[1]+iXI[1]¤ÎÊ£ÁÇ¥¹¥Ú¥¯¥È¥ë¤ÎÀäÂÐÃÍ¤È ¡¡¡¡XR[4]+iXI[4]¤ÎÊ£ÁÇ¥¹¥Ú¥¯¥È¥ë¤ÎÀäÂÐÃͤ¬ ¡¡¡¡¥¤¥³¡¼¥ë¤Ë¤Ê¤Ã¤¿¤ê¤·¤Æ¡£¡£¡£¡Ë ¡¡¡¡¥³¡¼¥É¤Ï²¼µ¤Ç¤¹¡£ ¡¡¡¡4096¥Ç¡¼¥¿¤¬¤¢¤ë¤Î¤Ç¡¢2¡°12=4096¤Ë¤Ê¤ë¤Î¤Ç¡¢ ¡¡¡¡¥Ð¥¿¥Õ¥é¥¤¤ò¤ä¤ë»þ¤Î½èÍýÎó¤Ï12Îó¤Ë¤·¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢ ¡¡¡¡¤É¤³¤¬¤ª¤«¤·¤¤¤Î¤Ç¤·¤ç¤¦¤«¡© ¢¡¡¤Þ¤¿¡¢²¼µ¥³¡¼¥É¤Ç¡¢ ¡¡¡¡¥Õ¡¼¥ê¥¨ÊÑ´¹¤·¤¿¸å¤Ë¤ÏXR[FI]¤Ç¥Õ¡¼¥ê¥¨¥¹¥Ú¥¯¥È¥ë¤Î ¡¡¡¡¼ÂÉô¡¢XI[FI]¤ËƱ¤¸¤¯µõÉô¤òÆþ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢ ¡¡¡¡¼þÇÈ¿ô¤È¤ÎÂбþ¤Ï¤É¤Î¤è¤¦¤Ë¤Ê¤ë¤Î¤Ç¤·¤ç¤¦¤«¡© ¡¡¡¡¡ÊÍפÏXR[0]+iXI[0]¤¬¤É¤Î¼þÇÈ¿ô¤ÎÊ£ÁÇ¥¹¥Ú¥¯¥È¥ë¤Ç¡¢ ¡¡¡¡¡¡XR[1]+iXI[1]¤¬¤¬¤É¤Î¼þÇÈ¿ô¤ÎÊ£ÁÇ¥¹¥Ú¥¯¥È¥ë¤Ç¡¢ ¡¡¡¡¡¡............. ¡¡¡¡¡¡............. ¡¡¡¡¡¡XR[4095]+iXI[4095]¤¬¤¬¤É¤Î¼þÇÈ¿ô¤ÎÊ£ÁÇ¥¹¥Ú¥¯¥È¥ë ¡¡¡¡¡¡¤ËÂбþ¤¹¤ë¤Î¤«¡©¡Ë ¢¡¡¤Þ¤¿¡¢µÕ¥Õ¡¼¥ê¥¨ÊÑ´¹¤ò¤¹¤ë¾ì¹ç¤Ë¤ª¤¤¤Æ¤Ï¡¢ ¡¡¡¡²¼µ¥³¡¼¥É¤Ç¡¢²¿½ê¤¬¤É¤¦ÊѤï¤Ã¤ÆÍè¤Æ¡¢ ¡¡¡¡ÇÈ·Á¤Î¥µ¥ó¥×¥ê¥ó¥°ÃͤϤɤÎÊÑ¿ô¤ËÌá¤Ã¤ÆÍè¤ë¤Î¤Ç¤·¤ç¤¦¤«¡© ¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á¡á /* XR[0]¡ÁXR[4095]¤ËÁ°¤â¤Ã¤ÆÇÈ·Á¤Î¥µ¥ó¥×¥ê¥ó¥°¥Ç¡¼¥¿¤¬¡¡*/ /* Æþ¤Ã¤Æ¤¤¤Æ¡¢ ¤³¤ì¤ò¥Õ¡¼¥ê¥¨ÊÑ´¹¤·¤¿¤¤¡£ ¡¡*/ double XR[4096]; /* For FFT */ double XI[4096]; /* For FFT */ int FN; /* For FFT */ int FL; /* For FFT */ int FR; /* For FFT */ int FIR; /* For FFT */ int FJ2; /* For FFT */ double FDEG; /* For FFT */ int FK; /* For FFT */ int FL1; /* For FFT */ double FP; /* For FFT */ int FB1; /* For FFT */ int FBIT; /* For FFT */ int FB2; /* For FFT */ double FARG; /* For FFT */ double FC; /* For FFT */ double FS; /* For FFT */ int FK1; /* For FFT */ double FA; /* For FFT */ double FB; /* For FFT */ int FKK; /* For FFT */ int FI; /* For FFT */ int FII; /* For FFT */ double FELR; /* For FFT */ double FELI; /* For FFT */ double PWR[4096]; /* For FFT */¡¡ FR = 12; /* FFT Routine */ ¡¡¡¡ FIR = 1; /* FFT Routine */ FN = 4096; ¡¡¡¡¡¡¡¡¡¡¡¡¡¡/* ²¼¤Þ¤Ç */ FJ2 = FN; FDEG = 2*3.14159/FN; FK = 0; FL1 = FR - 1; for (FL=1;FL<=FR;FL++) { FJ2 = FJ2/2; for (FI=1;FI<=FJ2;FI++) { FP = FK/pow(2,FL1); FB1 = FP; FBIT = 0; for (FII=1;FII<=FR;FII++) { FB2 = FB1/2; FBIT = FBIT*2+FB1-2*FB2; FB1 = FB2; } FARG = FDEG*FBIT; FC = cos(FARG); FS = FIR*sin(FARG); FK1 = FK + FJ2; FA = XR[FK1]*FC+XI[FK1]*FS; FB = XI[FK1]*FC-XR[FK1]*FS; XR[FK1]=XR[FK]-FA; XI[FK1]=XI[FK]-FB; XR[FK]=XR[FK]+FA; XI[FK]=XI[FK]+FB; FK = FK + 1; } FK = FK + FJ2; if (FK >= FN) { FK = 0; FL1 = FL1 - 1; } } for (FKK = 0;FKK<=FN-1;FKK++) { FP = FKK; FB1 = FP; FBIT = 0; for (FII=1;FII<=FR;FII++) { FB2 = FB1/2; FBIT = FBIT*2+FB1-2*FB2; FB1 = FB2; } if (FBIT > FKK) { FELR = XR[FKK]; XR[FKK] = XR[FBIT]; XR[FBIT] = FELR; FELI = XI[FKK]; XI[FKK] = XI[FBIT]; XI[FBIT] = FELI; } } for (FI=0;FI<FN-1;FI++) { PWR[FI]=sqrt(pow(XR[FI],2)+pow(XR[FI],2)); printf("FN FI XR XI PWR = %d %d %d %d \n", FN,FI,XR[FI],XI[FI],PWR[FI]); }
| ||
| ¤³¤ÎÅê¹Æ¤Ø¤Î¥³¥á¥ó¥È | ||
|
ÄɲüÁÌä¤Ç¤¹¡£ | ||
|
|