24小时热门版块排行榜    

查看: 2392  |  回复: 18
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

chenxiankai

禁虫 (正式写手)

本帖内容被屏蔽

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
chenxiankai: 金币+50 2014-09-02 10:12:18
见附件

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 傅里叶变换--fortran.doc
  • 2014-09-02 09:47:56, 34.5 K
2楼2014-09-02 09:50:52
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
4楼: Originally posted by chenxiankai at 2014-09-02 10:59:30
请问,我的复数数组,是一个与时间相关的数组,从-t-t之间的,所以数组个数是奇数,因为包括了t=0的时候,请问我该怎么来写这个呢...

可以补一个数,取最末三个数的平均。
5楼2014-09-02 11:17:06
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
6楼: Originally posted by chenxiankai at 2014-09-02 12:40:59
你的意思是在输出的数组的最末三个数区一个平均值,是吧
另外我的时间相关函数的时间间隔是dt, 那我的频率的间隔就应该是dw= 2*pi/N/dt,是不?(其中这个N是出去了t=0时刻的,本来总共的时间抽样个数是N+1)...

最末三个取平均,虚增一个,方便处理而已。

[ 发自小木虫客户端 ]
7楼2014-09-02 13:30:20
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
8楼: Originally posted by chenxiankai at 2014-09-02 14:12:43
例如如果我的复数数组的时间是
-3 -2 -1 0 1 2 3
我如果用你的程序就只能把0去掉,不太明白你的意思?...

在3后面增加2

[ 发自小木虫客户端 ]
9楼2014-09-02 14:26:34
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

引用回帖:
10楼: Originally posted by chenxiankai at 2014-09-02 14:30:14
那这样就不用吧中间那个时间t=0的那个数据给删除了,是吧?...

11楼2014-09-02 14:39:49
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
12楼: Originally posted by chenxiankai at 2014-09-02 15:19:52
请问那两个程序是不是计算速度很慢呢?...

不会的。
13楼2014-09-02 15:27:54
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

再看一下这个:

http://blog.renren.com/blog/247544700/703436782?bfrom=01020100300
!!时域分解FFT算法
!!离散时域信号的序号对应的时刻为nΔ,离散频域信号的序号对应的频率为m/(nΔ)
!!离散时域信号保存在文件A1.TXT中
!! 变换后的离散频域信号保存在文件 FFT_RESULT.TXT
!!编译器为cvf6.6

      PROGRAM FFT
      PARAMETER(K=4)
      !COMPLEX用结构体定义复数
      TYPE CMPLX0
      REAL RE0,IM0
      END TYPE

      REAL M
      TYPE(CMPLX0)A(0:2**K-1),A0(0:2**K-1)

      OPEN(1,FILE='A1.TXT')
      DO I=0,2**K-1
           READ(1,*) A(I).RE0,A(I).IM0
      ENDDO
!     PRINT*,A
      CLOSE(1)
      DO I=0,2**K-1
           A0(I)=A(IFIX(CTY_I(I,K)))
      ENDDO
!     PRINT*,A0
!     PAUSE

      DO I=1,K                                                      !大循环
           DO J0=1,2**(K-I)                                !单元个数
                 M=0
                 DO J1=(J0-1)*2**I,(J0-1)*2**I+2**(I-1)-1 !每个单元的运算次数
                      A(J1)=PLUS(A0(J1),MULT(A0(J1+2**(I-1)),W(M,2.**K)))
                      A(J1+2**(I-1))=SUBT
     &(A0(J1),MULT(A0(J1+2**(I-1)),W(M,2.**K)))
                      M=M+2**(K-I)
                      IF(M>=2**(K-1)) M=0
                 ENDDO
           ENDDO
      A0=A
      ENDDO
      OPEN(2,FILE='FFT_RESULT.TXT',ACTION='WRITE')
      DO I=0,2**K-1
           IF(A(I).RE0==0) THEN
                 WRITE(2,100) A(I).IM0
           ELSEIF(A(I).IM0==0)THEN
                 WRITE(2,200) A(I).RE0
           ELSE
                 WRITE(2,300)A(I).RE0,A(I).IM0
           ENDIF
      ENDDO
100 FORMAT(F18.3,'i')
200 FORMAT(F18.3)
300 FORMAT(F18.3,'           +',F18.3,'i')

      CONTAINS
      !PLUS 定义复数的加法
      FUNCTION PLUS(Z1,Z2)
      TYPE(CMPLX0) Z1,Z2,PLUS
      PLUS.RE0=Z1.RE0+Z2.RE0
      PLUS.IM0=Z1.IM0+Z2.IM0
      ENDFUNCTION
      !SUBTRACTION 定义复数的减法
      FUNCTION SUBT(Z1,Z2)
      TYPE(CMPLX0) Z1,Z2,SUBT
      SUBT.RE0=Z1.RE0-Z2.RE0
      SUBT.IM0=Z1.IM0-Z2.IM0
      ENDFUNCTION
      !MULTIPLACATION 定义复数的乘法
      FUNCTION MULT(Z1,Z2)
      TYPE(CMPLX0) Z1,Z2,MULT
      MULT.RE0=Z1.RE0*Z2.RE0-Z1.IM0*Z2.IM0
      MULT.IM0=Z1.RE0*Z2.IM0+Z1.IM0*Z2.RE0
      ENDFUNCTION
      !W(N)**M 定义WN的M次方
      FUNCTION W(M,N)
      REAL M,N
      TYPE(CMPLX0) W
      W.RE0=COS(2*3.1415926*M/N)
      W.IM0=-SIN(2*3.1415926*M/N)
      ENDFUNCTION
      !CONTRARY I 求I的二进制逆序数
      FUNCTION CTY_I(I0,N)
      INTEGER I,A(N),N,IO
      REAL CTY_I
      A=0
      I=I0
      CTY_I=0
      DO K0=1,N
      IF(I-2**(N-K0)<0)THEN
           A(K0)=0
      ELSE
           A(K0)=1
           I=I-2**(N-K0)
      ENDIF
      CTY_I=CTY_I+A(K0)*2**(K0-1)
      ENDDO
      ENDFUNCTION
      END
16楼2014-09-02 16:12:48
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
17楼: Originally posted by guangcun at 2015-02-04 19:23:05
请问二维傅里叶变换可以用这个吗,还是只是一维可以 ?...

可以作为二维傅里叶变换调用的子函数
18楼2015-02-04 20:23:20
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chenxiankai 的主题更新
信息提示
请填处理意见