現在、コードをFortranからMATLABに手動で変換していますが、その一部を変換する方法がわかりません。(コード全体は実際には2,000行のサブルーチンです。)コードは以下のとおりです。
C Has series crossed neckline?
120 neckext=x(trough(peaknum-1))+
* dydx*real((t-trough(peaknum-1)))
if(x(t).lt.neckext) goto 130
C NO. Here if series has not crossed neckline, nor new trough found
C Check to see if new trough has been found.
t=t+1
if(t.ge.lastobs) goto 900
if(x(t).lt.min) then
min=x(t)
mindate=t
end if
troughid=min*(1.0+cutoff)
if(x(t).ge.troughid) goto 150
goto 120
C YES. Here if series crossed neckline before new trough found
130 dblcount=0
if(poscount.ge.1) then
DO 132 i=1,poscount
if((enterdt(i)-2.le.t).and.(t.le.enterdt(i)+2)) then
dblcount=dblcount+1
end if
132 continue
if(dblcount.ge.1) then
C write(30,2583) t,Cutnum
2583 format('DoubleCounting episode occurred at ',I5,
* ' with Cutoff = ',F3.1)
goto 150
end if
end if
私の問題は、コードのこの部分にあります。
if(x(t).ge.troughid) goto 150
goto 120
この部分をMATLABで翻訳しているとき、私は次のようなものを書いていました。
if x(t,:)>=troughid
t=marker;
minimum=x(t,:);
end
しかし、ラベル120をどうしたらよいかわかりません。翻訳するときに、その部分をもう一度書きますか?私が理解していることから、120に戻ると、コードは再び実行されます。ありがとう!
編集:ラベル150と900が何をするかについてのクリスの質問への回答として、私はそれらをここに投稿します。
150 t=marker
min=x(t)
そしてこれはラベル900用です。
C Last observation found. This iteration finished.
900 continue