24小时热门版块排行榜    

查看: 932  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿吉林大学材料学硕321求调剂 +9 Ymlll 2026-03-18 12/600 2026-03-20 00:01 by 23Postgrad
[考研] 生物学调剂招人!!! +3 山海天岚 2026-03-17 4/200 2026-03-19 21:34 by 怎么释怀
[考博] 申博26年 +3 八6八68 2026-03-19 3/150 2026-03-19 19:43 by nxgogo
[考研] 085601材料工程专硕求调剂 +10 慕寒mio 2026-03-16 10/500 2026-03-19 15:26 by 丁丁*
[考研] 材料与化工求调剂 +7 为学666 2026-03-16 7/350 2026-03-19 14:48 by 尽舜尧1
[考研] 085600材料与化工求调剂 +6 绪幸与子 2026-03-17 6/300 2026-03-19 13:27 by houyaoxu
[考研] 287求调剂 +3 晨昏线与星海 2026-03-19 4/200 2026-03-19 12:32 by peike
[考研] 一志愿985,本科211,0817化学工程与技术319求调剂 +10 Liwangman 2026-03-15 10/500 2026-03-19 10:25 by 无际的草原
[考研] 本科郑州大学物理学院,一志愿华科070200学硕,346求调剂 +4 我不是一根葱 2026-03-18 4/200 2026-03-19 09:11 by 浮云166
[考研] 材料专硕英一数二306 +5 z1z2z3879 2026-03-18 5/250 2026-03-19 07:43 by BruceLiu320
[考研] 0703化学 305求调剂 +4 FY_yy 2026-03-14 4/200 2026-03-19 05:54 by anny19840123
[考研] 344求调剂 +6 knight344 2026-03-16 7/350 2026-03-18 20:13 by walc
[考研] 材料专硕306英一数二 +10 z1z2z3879 2026-03-16 13/650 2026-03-18 14:20 by 007_lilei
[考研] 070300化学319求调剂 +6 锦鲤0909 2026-03-17 6/300 2026-03-18 13:22 by Iveryant
[考研] 303求调剂 +4 睿08 2026-03-17 6/300 2026-03-18 11:01 by Iveryant
[硕博家园] 湖北工业大学 生命科学与健康学院-课题组招收2026级食品/生物方向硕士 +3 1喜春8 2026-03-17 5/250 2026-03-17 17:18 by ber川cool子
[考研] 304求调剂 +3 曼殊2266 2026-03-14 3/150 2026-03-16 16:39 by houyaoxu
[考研] 26考研一志愿中国石油大学(华东)305分求调剂 +3 嘉年新程 2026-03-15 3/150 2026-03-15 13:58 by 哈哈哈哈嘿嘿嘿
[考研] 085601材料工程315分求调剂 +3 yang_0104 2026-03-15 3/150 2026-03-15 10:58 by peike
[考研] 080500,材料学硕302分求调剂学校 +4 初识可乐 2026-03-14 5/250 2026-03-14 21:08 by peike
信息提示
请填处理意见