24小时热门版块排行榜    

查看: 1068  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 听说今天filecode变了 +17 布布和一二 2026-08-06 31/1550 2026-08-06 22:34 by qusibaya
[基金申请] filecode +10 等待解的谜 2026-08-06 14/700 2026-08-06 21:16 by zhanghaozhu
[基金申请] 固定端突然变了,今天 +3 archvillain 2026-08-06 7/350 2026-08-06 21:05 by archvillain
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 6/300 2026-08-06 20:19 by 苏知砚
[基金申请] 基金中了 +4 laoda193707 2026-08-06 4/200 2026-08-06 18:56 by olivermiaoer
[有机交流] 一个有机合成实验室都需要哪些设备? 50+3 kf2781974 2026-07-31 12/600 2026-08-06 15:11 by eddyin
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[教师之家] 咨询面上基金 +4 李长云 2026-07-31 7/350 2026-08-06 11:20 by 李长云
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇! +22 低垂的野花 2026-07-31 30/1500 2026-08-05 18:03 by 低垂的野花
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 4/200 2026-08-05 09:59 by lfy8008
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[论文投稿] 十年后又回来了,论文投稿求助 +3 哈哈114477 2026-08-01 3/150 2026-08-04 15:40 by tegsgjy20
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
[基金申请] 娱乐 +4 Tide man 2026-08-03 4/200 2026-08-04 11:51 by wgch518
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
信息提示
请填处理意见