roboy 发表于 2005-8-27 01:01

有没有DFT实数序列变换的源程序啊?

最好是1024点的,谢谢!

aspen 发表于 2005-8-27 08:19

回复:(roboy)有没有DFT实数序列变换的源程序啊?

看看这个是不是你需要的
算法原理与matlab语言的fft和ifft函数同。(可详见matlab的help文件)。


#include "stdio.h"
#include "math.h"
#define PI 3.1415926
#define N 7
void mefft(float pr[],float pi[],int n,float fr[],float fi[])
{
        int i,k;
        for(k=0;k<n;k++)
        {
                fr=0;
                fi=0;
        }
        for(k=0;k<n;k++)
        {
                for(i=0;i<n;i++)
                {
                        fr=fr+pr*cos(-2*PI*i*k/n)-pi*sin(-2*PI*i*k/n);
                        fi=fi+pi*cos(-2*PI*i*k/n)+pr*sin(-2*PI*i*k/n);
                }
       
        }
}

void meifft(float fr[],float fi[],int n,float pr[],float pi[])
{
        int i,j,k;
        for(i=0;i<n;i++)
        {
                pr=0;
                pi=0;
        }
        for(i=0;i<n;i++)
        {
                for(k=0;k<n;k++)
                {
                        pr=pr+(fr*cos(2*PI*i*k/n)-fi*sin(2*PI*i*k/n));
                        pi=pi+(fi*cos(2*PI*i*k/n)+fr*sin(2*PI*i*k/n));
                }
                pr=pr/n;
                pi=pi/n;
        }
}

main()
{
        float fr,fi;
        int i,j;
        static float pr={1,2,3,4,5,6,7};
        static float pi={0,0,0,0,0,0,0};
        mefft(pr,pi,7,fr,fi);
        for(i=0;i<7;i++)
        {
                printf("%f %f\n",fr,fi);
        }
        meifft(fr,fi,7,pr,pi);
        for(i=0;i<7;i++)
        {
                printf("%f %f\n",pr,pi);
        }
}

roboy 发表于 2005-8-27 14:01

热烈感谢aspen啊!

<P>程序我还没有试,但是大概看了一下就是它了。太谢谢了!</P>

aspen 发表于 2005-8-27 14:09

回复:(roboy)热烈感谢aspen啊!

不用客气,希望以后经常光临,大家共同交流提高。
页: [1]
查看完整版本: 有没有DFT实数序列变换的源程序啊?