24小时热门版块排行榜    

查看: 931  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0703化学调剂 ,六级已过,有科研经历 +11 曦熙兮 2026-03-15 11/550 2026-03-19 17:13 by yywzz
[考研] 324分 085600材料化工求调剂 +3 llllkkkhh 2026-03-18 3/150 2026-03-19 14:22 by houyaoxu
[考研] 317求调剂 +3 申子申申 2026-03-19 6/300 2026-03-19 14:16 by 申子申申
[考研] 一志愿南昌大学,327分,材料与化工085600 +3 Ncdx123456 2026-03-19 3/150 2026-03-19 13:18 by houyaoxu
[考研] 一志愿吉林大学材料学硕321求调剂 +6 Ymlll 2026-03-18 9/450 2026-03-19 10:28 by 星空星月
[考研] 085700资源与环境308求调剂 +3 墨墨漠 2026-03-18 3/150 2026-03-18 22:35 by bingxueer79
[考研] 085600材料与化工 +5 安全上岸! 2026-03-16 5/250 2026-03-18 15:33 by cmz0325
[考研] 0854可跨调剂,一作一项核心论文五项专利,省、国级证书40+数一英一287 +8 小李0854 2026-03-16 8/400 2026-03-18 14:35 by 搏击518
[考研] 0703化学求调剂 总分331 +3 ZY-05 2026-03-13 3/150 2026-03-18 10:58 by macy2011
[考研] 0703化学调剂 +3 妮妮ninicgb 2026-03-17 3/150 2026-03-18 10:29 by macy2011
[考研] 268求调剂 +7 好运连绵不绝 2026-03-12 8/400 2026-03-17 20:28 by xilongliang
[考研] 277调剂 +5 自由煎饼果子 2026-03-16 6/300 2026-03-17 19:26 by 李leezz
[考研] 材料工程专硕274一志愿211求调剂 +6 薛云鹏 2026-03-15 6/300 2026-03-17 11:05 by 学员h26Tkc
[考研] 333求调剂 +3 文思客 2026-03-16 7/350 2026-03-16 18:21 by 文思客
[考研] 304求调剂 +4 ahbd 2026-03-14 4/200 2026-03-16 16:48 by 我的船我的海
[考研] 一志愿华中师范071000,325求调剂 +6 RuitingC 2026-03-12 6/300 2026-03-16 14:50 by 可淡不可忘
[考研] 0703化学调剂 290分有科研经历,论文在投 +7 腻腻gk 2026-03-14 7/350 2026-03-16 10:12 by houyaoxu
[考研] 326求调剂 +3 mlpqaz03 2026-03-15 3/150 2026-03-16 07:33 by Iveryant
[考研] 330求调剂 +3 ?酱给调剂跪了 2026-03-13 3/150 2026-03-14 10:13 by JourneyLucky
[考研] 290求调剂 +3 ADT 2026-03-13 3/150 2026-03-13 10:19 by peike
信息提示
请填处理意见