声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3108|回复: 3

[其他相关] 有没有DFT实数序列变换的源程序啊?

[复制链接]
发表于 2005-8-27 01:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
最好是1024点的,谢谢!

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2005-8-27 08:19 | 显示全部楼层

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

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


  1. #include "stdio.h"
  2. #include "math.h"
  3. #define PI 3.1415926
  4. #define N 7
  5. void mefft(float pr[],float pi[],int n,float fr[],float fi[])
  6. {
  7.         int i,k;
  8.         for(k=0;k<n;k++)
  9.         {
  10.                 fr[k]=0;
  11.                 fi[k]=0;
  12.         }
  13.         for(k=0;k<n;k++)
  14.         {
  15.                 for(i=0;i<n;i++)
  16.                 {
  17.                         fr[k]=fr[k]+pr[i]*cos(-2*PI*i*k/n)-pi[i]*sin(-2*PI*i*k/n);
  18.                         fi[k]=fi[k]+pi[i]*cos(-2*PI*i*k/n)+pr[i]*sin(-2*PI*i*k/n);
  19.                 }
  20.        
  21.         }
  22. }

  23. void meifft(float fr[],float fi[],int n,float pr[],float pi[])
  24. {
  25.         int i,j,k;
  26.         for(i=0;i<n;i++)
  27.         {
  28.                 pr[i]=0;
  29.                 pi[i]=0;
  30.         }
  31.         for(i=0;i<n;i++)
  32.         {
  33.                 for(k=0;k<n;k++)
  34.                 {
  35.                         pr[i]=pr[i]+(fr[k]*cos(2*PI*i*k/n)-fi[k]*sin(2*PI*i*k/n));
  36.                         pi[i]=pi[i]+(fi[k]*cos(2*PI*i*k/n)+fr[k]*sin(2*PI*i*k/n));
  37.                 }
  38.                 pr[i]=pr[i]/n;
  39.                 pi[i]=pi[i]/n;
  40.         }
  41. }

  42. main()
  43. {
  44.         float fr[N],fi[N];
  45.         int i,j;
  46.         static float pr[N]={1,2,3,4,5,6,7};
  47.         static float pi[N]={0,0,0,0,0,0,0};
  48.         mefft(pr,pi,7,fr,fi);
  49.         for(i=0;i<7;i++)
  50.         {
  51.                 printf("%f %f\n",fr[i],fi[i]);
  52.         }
  53.         meifft(fr,fi,7,pr,pi);
  54.         for(i=0;i<7;i++)
  55.         {
  56.                 printf("%f %f\n",pr[i],pi[i]);
  57.         }
  58. }
复制代码
 楼主| 发表于 2005-8-27 14:01 | 显示全部楼层

热烈感谢aspen啊!

<P>程序我还没有试,但是大概看了一下就是它了。太谢谢了!</P>
发表于 2005-8-27 14:09 | 显示全部楼层

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

不用客气,希望以后经常光临,大家共同交流提高。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-13 23:41 , Processed in 0.053787 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表