我们一般求卷积(非fft方法)的程序是:
这里求的是两组已知长度的序列x(n)和h(m)的卷积,卷积结果由y表示
        dimension x(0:L-1),h(0:L-1),y(0:L-1)
        l=m+n-1
        Ierror=0
        if(l.ge.(m+n-1))goto 1
        Ierror=1
        return
1       do 2 i=n,L-1  !由于y长度是m+n-1,所以x和h分别在n和m之外的部分用零
         !补足
2          x(i)=0.0
        do 3 i=m,L-1
3          h(i)=0.0
c
        do 11 k=0,L-1
           sum=0.0
           do 12 i=0,k
              sum=sum+x(i)*h(k-i)
12          continue
           y(k)=sum
    write(111,*) y(k)
11       continue
        return
        end

我们都知道,卷级的核心就是翻转,成绩,叠加,也就是这一步:
        sum=sum+x(i)*h(k-i)
我现在想知道的是,可不可以不定义数组dimension x(0:L-1),h(0:L-1),y(0:L-1),
也就是x或h的长度不知道,只知道要计算到某一时刻t就停止(这里就当成计算两组时间序列的卷积),只保存当前步骤的卷积数值(也就是这里的sum),把当前步骤的卷积值写到文本文件里就行了,比如下面这样(但这个结果不对,想问一下大家这个应该怎么写呢?)
    program  test_conv 
!计算两组数据 ht和ft的卷积,ht和ft的具体取值如下面程序所写:
!ht=exp(-time)等等
    time=0.0
    do i=1,600
    ht=exp(-time)
!
    if(i>=1 .and.i<=101) then
    ft=1.
    else
    ft=0.
    end if
!
    ans=ans+ht*ft*0.01 !现在计算的是相关,不是卷积,因为没有翻转
            ! 我感觉错误还是出现在这一步,但不知道应该怎么写
            !才能跟上一个程序的结果一样呢?
!         然后在这里把这一步得到的ans,也就是卷积结果写入文本            
    time=time+0.01
    end do
    end 
我的意思就是不把ht和ft定义成数组,怎样来求ht和ft的卷积? (这里ft和ht的例子好像给的不好) 好像类似于叫动态卷积?
我写的有点多,但想尽量写得详细一写大家才能弄明白我的问题是什么意思吧? 如果还有写的不清楚的地方,大家尽管问我。  我被这个问题困扰很久了[em10][em10][em10][em10][em10][em10][em2][em2][em2] 非常感谢[em2]