24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 848  |  回复: 3

河边草吧

新虫 (初入文坛)

[求助] 帮忙解释一下这段fortran程序

INTEGER(2) STATUS
        DO I=1, N
        DO J=1, N
        PH(I,J)=0.0
        FT(I,J)=0.0
        END DO
        END DO
        NHTM=2**NUHTM      ! 2^NUHTM为计算子孔径光斑的付氏变换点阵数
        K=NHTM/2+1
        M=INT(NSA/2)      
        DO 200 L=1, NH     
        I0=IC(L)           
        J0=JC(L)
        DO 100 I=-M, M
        I1=I0+I
        DO 100 J=-M, M
        J1=J0+J
        FT(K+I,K+J)=CMPLX(XR(I1,J1),XI(I1,J1))
100        CONTINUE
        NU0=NUHTM
        CALL FFTDB(NU0)
        I0=IH(L)-K          !IH(M),JH(M): H-S子孔径中心座标
        J0=JH(L)-K
        DO I=1, NHTM
        I1=I0+I
        DO J=1, NHTM
        J1=J0+J
        X=FT(I,J)
        PH(I1,J1)=PH(I1,J1)+X*CONJG(X)
        END DO
        END DO
        do i=1, nhtm
        do j=1, nhtm
        ft(i,j)=0.0
        end do
        end do
200        CONTINUE
        R=PI/FLOAT(NHTM)
        M=K-1
        DO 500 L=1, NH
        I0=IH(L)
        J0=JH(L)
        X1=0.0
        Y1=0.0
        U=0.0
        DO I=-M+1, M
        I1=I0+I
        DO J=-M+1, M
        J1=J0+J
        V=PH(I1,J1)
        U=U+V
        X1=X1+I*V
        Y1=Y1+J*V
        END DO
        END DO
        V=R/U
        IF(U.NE.0.0) THEN
        TX(L)=V*X1-TX0(L)     
        TY(L)=V*Y1-TY0(L)   
        END IF
500        continue
        IF(IWS.EQ.0) THEN     
                X1=0.0
                Y1=0.0
                DO 600 L=1, NH
                X1=X1+TX(L)
                Y1=Y1+TY(L)
600                CONTINUE
                X1=X1/NH
                Y1=Y1/NH
                DO 800 J=1, NH
                TX(J)=TX(J)-X1
800                TY(J)=TY(J)-Y1
                TXM=X1-TXM0      
                TYM=Y1-TYM0
        END IF
        call graph(2)
        STATUS = SETCOLOR(12)
        is=nccd/ns             !ns,光束直径上的子孔径数;NCCD为传感器点阵数
        js=is/2
        DO I=1, NH
        ii=ih(i)-js+356
        jj=jh(i)-js+310
        STATUS = RECTANGLE($GBORDER,II,JJ,II+IS,JJ+IS)
        end do
        return
        END
回复此楼

» 猜你喜欢

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

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

janecool

铁杆木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
感觉没有什么说的呀...就是简单循环,条件语句,执行子程序命令...看看fortran77的基本知识应该没问题,至于物理内容结合程序和公式看就OK。
相信会有属于你的精彩
2楼2012-04-20 21:16:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yiluwangxi

木虫 (著名写手)

强人,牛人,2盟币叫人来读源程序。叹服。
3楼2012-04-20 23:19:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

未注册用户

木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
楼主是让一行一行的解释么?还是怎么地
粗看没什么,就是Do循环啊
楼主是初学者么?要是话,还是好好看看书,一步一步来吧
4楼2012-04-21 09:25:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 河边草吧 的主题更新
信息提示
请填处理意见