matlab无限长序列卷积,怎样求未知长度序列的卷积
程序是用fortran寫(xiě)的,但這里沒(méi)有單獨(dú)的板塊,所以發(fā)到這里了,其實(shí)這不是一個(gè)程序語(yǔ)言的問(wèn)題,用matlab編的話也會(huì)出現(xiàn)這個(gè)問(wèn)題。
關(guān)于卷積,怎樣求兩個(gè)未知長(zhǎng)度序列的卷積,就是不聲明數(shù)組,只保存當(dāng)前步數(shù)據(jù)
我們一般求卷積(非fft方法)的程序是:
這里求的是兩組已知長(zhǎng)度的序列x(n)和h(m)的卷積,卷積結(jié)果由y表示
dimension x(0-1),h(0-1),y(0-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長(zhǎng)度是m+n-1,所以x和h分別在n和m之外的部分用零
!補(bǔ)足
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
我們都知道,卷級(jí)的核心就是翻轉(zhuǎn),成績(jī),疊加,也就是這一步:
sum=sum+x(i)*h(k-i)
我現(xiàn)在想知道的是,可不可以不定義數(shù)組dimension x(0-1),h(0-1),y(0-1),
也就是x或h的長(zhǎng)度不知道,只知道要計(jì)算到某一時(shí)刻t就停止(這里就當(dāng)成計(jì)算兩組時(shí)間序列的卷積),只保存當(dāng)前步驟的卷積數(shù)值(也就是這里的sum),把當(dāng)前步驟的卷積值寫(xiě)到文本文件里就行了,比如下面這樣(但這個(gè)結(jié)果不對(duì),想問(wèn)一下大家這個(gè)應(yīng)該怎么寫(xiě)呢?)
program??test_conv
!計(jì)算兩組數(shù)據(jù) ht和ft的卷積,ht和ft的具體取值如下面程序所寫(xiě):
!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 !現(xiàn)在計(jì)算的是相關(guān),不是卷積,因?yàn)闆](méi)有翻轉(zhuǎn)
! 我感覺(jué)錯(cuò)誤還是出現(xiàn)在這一步,但不知道應(yīng)該怎么寫(xiě)
!才能跟上一個(gè)程序的結(jié)果一樣呢?
!? ?? ?? ?然后在這里把這一步得到的ans,也就是卷積結(jié)果寫(xiě)入文本
time=time+0.01
end do
end
我的意思就是不把ht和ft定義成數(shù)組,怎樣來(lái)求ht和ft的卷積? (這里ft和ht的例子好像給的不好) 好像類似于叫動(dòng)態(tài)卷積?
我寫(xiě)的有點(diǎn)多,但想盡量寫(xiě)得詳細(xì)一寫(xiě)大家才能弄明白我的問(wèn)題是什么意思吧? 如果還有寫(xiě)的不清楚的地方,大家盡管問(wèn)我。??我被這個(gè)問(wèn)題困擾很久了? ?? ?? ?? ? 非常感謝
總結(jié)
以上是生活随笔為你收集整理的matlab无限长序列卷积,怎样求未知长度序列的卷积的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php博客添加live2d,在博客中增加
- 下一篇: matlab rltool,matlab