| 4 | 1/1 | 返回列表 |
| 查看: 946 | 回復(fù): 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 %這里還未調(diào)試 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任意跳轉(zhuǎn),例如basic中的goto 1290,從第三層的嵌套跳到最外層,或者次外層! 2.在basic中的那一句M=M+1;F(M)=........;F(M)=........什么意思?自身疊加?但是貌似沒有給到上限M值。matlab無法用while循環(huán)啊? |
銀蟲 (小有名氣)
至尊木蟲 (著名寫手)
驃騎將軍
|
把gosub改成調(diào)用子函數(shù),所有用到的參數(shù)用函數(shù)定義來傳遞 goto前面出現(xiàn)的標(biāo)號改成loop,中間的if...goto 后面的標(biāo)號 改為循環(huán)終止的break條件 M=M+1;可能M是下標(biāo),自加, matlab有while循環(huán),可以用死循環(huán)while 1 下面這個錯誤 In an assignment A(I) = B, the number of elements in B and I must be the same. 是說: 用A(I)=B來將向量/矩陣A的下標(biāo)I表示的元素整體替換為向量/矩陣B時,B的元素個數(shù)必須與下標(biāo)I的長度相等. 或者說你要替換A中的5個元素,B也必須有5個元素,如果個數(shù)不等就會報這個錯誤. |

銀蟲 (小有名氣)
| 4 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 083000學(xué)碩274求調(diào)劑 +7 | Li李魚 2026-03-26 | 7/350 |
|
|---|---|---|---|---|
|
[考研] 286求調(diào)劑 +10 | PolarBear11 2026-03-26 | 10/500 |
|
|
[考研] 085404求調(diào)劑,總分309,本科經(jīng)歷較為豐富 +4 | 來財aa 2026-03-25 | 4/200 |
|
|
[考研] 壓國家一區(qū)線,求導(dǎo)師收留,有恩必謝! +3 | 迷人的哈哈 2026-03-28 | 3/150 |
|
|
[考研] 085600 286分 材料求調(diào)劑 +5 | 麻辣魷魚 2026-03-27 | 6/300 |
|
|
[考研] 一志愿哈爾濱工業(yè)大學(xué)材料與化工方向336分 +6 | 辰沐5211314 2026-03-26 | 6/300 |
|
|
[考研] 070300求調(diào)劑306分 +3 | 26要上岸 2026-03-27 | 3/150 |
|
|
[考研] 272求調(diào)劑 +7 | 腳滑的守法公民 2026-03-27 | 7/350 |
|
|
[考研] 考研調(diào)劑 +9 | 小蠟新筆 2026-03-26 | 9/450 |
|
|
[考研] 336材料求調(diào)劑 +7 | 陳瀅瑩 2026-03-26 | 9/450 |
|
|
[考研] 一志愿華理,數(shù)一英一285求A區(qū)調(diào)劑 +8 | AZMK 2026-03-25 | 10/500 |
|
|
[考研] 294分080500材料科學(xué)與工程求調(diào)劑 +4 | 柳溪邊 2026-03-26 | 4/200 |
|
|
[考研] 324求調(diào)劑 +4 | wysyjs25 2026-03-21 | 4/200 |
|
|
[考研]
材料調(diào)劑
5+4
|
想要一壺桃花水 2026-03-25 | 10/500 |
|
|
[考研] 中國科學(xué)院深圳先進(jìn)技術(shù)研究院-光纖傳感課題組招生-中國科學(xué)院大學(xué)、深圳理工大學(xué)聯(lián)培 +5 | YangTyu1 2026-03-26 | 5/250 |
|
|
[考研]
|
WWW西西弗斯 2026-03-24 | 8/400 |
|
|
[考研] 尋找調(diào)劑 +5 | 倔強(qiáng)芒? 2026-03-21 | 8/400 |
|
|
[考研] 材料專碩 335 分求調(diào)劑 +4 | 拒絕冷暴力 2026-03-25 | 4/200 |
|
|
[考博] 26申博自薦 +3 | whh869393 2026-03-24 | 3/150 |
|
|
[考研] 341求調(diào)劑(一志愿湖南大學(xué)070300) +5 | 番茄頭--- 2026-03-22 | 6/300 |
|