24小时热门版块排行榜    

查看: 1079  |  回复: 3

GGhigh

银虫 (小有名气)

[求助] basic程序改写成matlab程序!

最近在改写一个basic的程序,改写成matlab下运行
basic(部分程序):
1280 CO=0;T=0;M=0;V=1;CH=1;AC=0.001;  %function evaluation;
1290 BA=C(M+1);
1300 K2=WW*WW-BA*BA;
1310 SS=sign(K2);
1320 if SS=1 and abs(K2)>0.01 then K=sqrt(K2)
1330 if  SS=-1 and abs(K2)>0.01 then K=sqrt(-K2)
1340 if SS=0 or abs(K2)<=0.01
1350 X=WW/R ; MM=1;   gosub 2220          %这里还未调试
1360 Y1=J1;Y2=J2;Y3=J3;Y4=J4;
1370 X=K;MM=SS;gosub 2220
1380 Z1=J1;Z2=J2;Z3=J3;Z4=J4;
1390 X=WW;MM=1;gosub 2220
1400 SN=J2*Y3-Y1*J4;
1410 SD=J1*Y3-Y1*J3;
1420 S=WW*SN/SD;
1430 FT=K*Z2/Z1;
1440 M=M+1;
1450 F(M)=K*K2*SN*Z1*Z2/WW-K^2*Z2^2*SD
1460 F(M)=F(M)+N^2*BA^2*Z1^2*SD/(WW*WW);
1470 if V==1 goto 1500
1480 if M>=2 goto 1660
1490 goto 1290
1500  BA=BA+0.02*CH;
1510  if BA>=WW then BA=BA-0.01;CH=-1;
1520  if M=1 GOTO 1300
1530 SS==sign(F(M));ST==sign(F(M-1));
1540 if SS==ST then F(M-1)=F(M);M=M-1;GOTO 1300
1550 C(1)=BA-0.005*CH;
1560  C(2)=BA-0.01*CH;
1570 V=0;T=T+1;M=0
1580 GOTO 1290
........
1660
...(1660是另外一个子程序了)
我改写的matlab程序如下:
CO=0;T=0;M=0;V=1;CH=1;AC=0.001;  %function evaluation;
BA=C(M+1);
K2=WW*WW-BA*BA;
SS=sign(K2);
if (SS==1 & abs(K2)>0.01)
    K=sqrt(K2);
end
if  (SS==-1 & abs(K2)>0.01)
    K=sqrt(-K2);
end
if (SS==0 | abs(K2)<=0.01)
    CO=CO+1;   %修正MODIFICATION;(这是2040)
    if CO>2
        disp ('error')
        return
    else  disp('MODIFICATION')
        BA=BA-0.002;
        return
    end
end
X=WW/R ; MM=1;            
bessel;   (这里就是子程序2220)
Y1=J1;Y2=J2;Y3=J3;Y4=J4;
X=K;MM=SS;
bessel;
Z1=J1;Z2=J2;Z3=J3;Z4=J4;
X=WW;MM=1;
bessel;
SN=J2*Y3-Y1*J4;
SD=J1*Y3-Y1*J3;
S=WW*SN/SD;
FT=K*Z2/Z1;
M=M+1;
F(M)=K*K2*SN*Z1*Z2/WW-K^2*Z2^2*SD;%有问题
F(M)=F(M)+N^2*BA^2*Z1^2*SD/(WW*WW);
if V==1
    BA=BA+0.02*CH;
    if BA>=WW
        BA=BA-0.01;CH=-1;
    end
    if M==1
       return
    else
        SS==sign(F(M));ST==sign(F(M-1));
        if SS==ST
            F(M-1)=F(M);
            M=M-1;
            return
        else C(1)=BA-0.005*CH;
             C(2)=BA-0.01*CH;
             V=0;T=T+1;M=0;
            return
        end
    end
end
问题是:1.在matlab中我如何能够像basic任意跳转,例如basic中的goto 1290,从第三层的嵌套跳到最外层,或者次外层!
2.在basic中的那一句M=M+1;F(M)=........;F(M)=........什么意思?自身叠加?但是貌似没有给到上限M值。matlab无法用while循环啊?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

GGhigh

银虫 (小有名气)

我再算F(M)的时候有下面错误提示
In an assignment  A(I) = B, the number of elements in B and
I must be the same.
2楼2012-09-06 17:47:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+1, 感谢提供建议 2012-09-06 21:22:53
GGhigh: 金币+10, ★★★很有帮助 2012-09-07 09:51:00
把gosub改成调用子函数,所有用到的参数用函数定义来传递
goto前面出现的标号改成loop,中间的if...goto 后面的标号 改为循环终止的break条件
M=M+1;可能M是下标,自加,
matlab有while循环,可以用死循环while 1
下面这个错误
In an assignment  A(I) = B, the number of elements in B and I must be the same.
是说: 用A(I)=B来将向量/矩阵A的下标I表示的元素整体替换为向量/矩阵B时,B的元素个数必须与下标I的长度相等.
或者说你要替换A中的5个元素,B也必须有5个元素,如果个数不等就会报这个错误.
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
3楼2012-09-06 20:06:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

GGhigh

银虫 (小有名气)

引用回帖:
3楼: Originally posted by libralibra at 2012-09-06 20:06:37
把gosub改成调用子函数,所有用到的参数用函数定义来传递
goto前面出现的标号改成loop,中间的if...goto 后面的标号 改为循环终止的break条件
M=M+1;可能M是下标,自加,
matlab有while循环,可以用死循环while 1
下 ...

谢谢!我去尝试一下!哈哈!
4楼2012-09-07 09:07:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 GGhigh 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 k0dTPqJtl0jt 2026-08-14 3/150 2026-08-15 12:33 by KxMI1BYBxWX1
[基金申请] 关于Filecode分析方法 +10 majunge000 2026-08-10 13/650 2026-08-15 12:26 by hanpeng972
[考研] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +5 HFw0lei2R37i 2026-08-14 9/450 2026-08-15 11:33 by KxMI1BYBxWX1
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +5 7lpolszZVXgi 2026-08-14 6/300 2026-08-15 09:28 by sunzitan
[基金申请] filecode +7 cratir 2026-08-14 11/550 2026-08-15 06:19 by 学员8dgXkO
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 k0dTPqJtl0jt 2026-08-14 5/250 2026-08-15 04:45 by 4wMiSEwB6436
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 7lpolszZVXgi 2026-08-14 5/250 2026-08-15 04:41 by 4wMiSEwB6436
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 HFw0lei2R37i 2026-08-14 4/200 2026-08-15 04:17 by 4wMiSEwB6436
[找工作] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 k0dTPqJtl0jt 2026-08-14 4/200 2026-08-15 02:21 by 4wMiSEwB6436
[基金申请] 小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊 +11 Tide man 2026-08-10 12/600 2026-08-15 02:12 by home3163
[教师之家] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 HFw0lei2R37i 2026-08-14 5/250 2026-08-14 22:32 by 4wMiSEwB6436
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +23 Lanmanbaby 2026-08-09 37/1850 2026-08-14 13:40 by Equinoxhua
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +10 家与远方 2026-08-10 15/750 2026-08-14 02:08 by 绵羊哥哥
[基金申请] 静等基金结果 +8 gjjjzhong 2026-08-10 21/1050 2026-08-13 17:56 by 且听虎啸
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
信息提示
请填处理意见