Image WELCOME TO MY HOMEPAGE Image
BBS

FFT¤ò¤ä¤ê¤¿¤¤¤Î¤Ç¤¹¤¬¡¢
Icon Nih - 2002ǯ04·î03Æü 22»þ15ʬ39ÉÃ
°úÍÑ
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]);
}


Icon

¤³¤ÎÅê¹Æ¤Ø¤Î¥³¥á¥ó¥È
ÄɲüÁÌä¤Ç¤¹¡£
| ¥¤¥ó¥Ç¥Ã¥¯¥¹ | ¥Û¡¼¥à¥Ú¡¼¥¸ |

GeoCities