| 5 | 1/1 | 返回列表 |
| 查看: 525 | 回復: 2 | ||
| 當前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | ||
harp木蟲 (正式寫手)
|
[求助]
Matlab循環(huán)的“詭異”問題
|
|
|
問題:可以運行一次兩排“%%%%%%%%%%” 之間的代碼,也就是被循環(huán)語句,而且結(jié)果合理,速度非常快,按下enter就能顯示結(jié)果,這應該能說明這段代碼沒有問題吧? 可加上for語句后運行起來卻不行,運行的非常慢,一直busy,等不到結(jié)果;另外,就算把兩排“%%%%%%%%%%” 之間的代碼復制重新運行也不行;使用clear命令清楚后再復制運行也不行,除非重啟matlab才能運行。 這是怎么回事??? ![]() ![]() ![]() ![]() 求高人指教xm=zeros(42,10); for i=1:10 %%%%%%%%%%%%%%%%%%%%%% C=[0.002026883,0.007821721,0.023555797,0.014122603,0.027523128,0.019160052,0.05981332,0.072422514,0.277256157,0.496297825]; P=C(1); Ti=C(2); K=C(3); Na=C(4); Mg=C(5); S=C(6); Fe=C(7); Ca=C(8); Al=C(9); Si=C(10); x=zeros(42,1); %P r1=rand(2,1); xP=(r1/sum(r1))*P; x(3)=xP(1)/3; x(6)=xP(2)/2; Ca=Ca-5*x(3)-x(6); Al=Al-3*x(6); %Ti r2=rand(2,1); xTi=(r2/sum(r2))*Ti; x(41)=xTi(1); x(42)=xTi(2); %K r3=rand(3,1); xK=(r3/sum(r3))*K; x(25)=xK(1)/1.5; x(26)=xK(2); x(27)=xK(3); Al=Al-5.49999*x(25)-x(26); Si=Si-6.5*x(25)-3*x(26); S=S-2*x(27); Fe=Fe-3*x(27); %Na St=-1; Mgt=-1; while (St<=0)||(Mgt<=0) Nat=Na; Mgt=Mg; St=S; Fet=Fe; Cat=Ca; Alt=Al; Sit=Si; r4=rand(8,1); xNa=(r4/sum(r4))*Nat; x(32)=xNa(1)/0.33; x(33)=xNa(2)/0.7; x(34)=xNa(3)/2; x(35)=xNa(4)/2; x(36)=xNa(5); x(37)=xNa(6); x(38)=xNa(7); x(39)=xNa(8); Alt=Alt-1.67*x(32)-2.6*x(33)-x(36)-x(37)-x(38); Mgt=Mgt-0.33*x(32)-0.7*x(33); St=St-2*x(34)-x(35)-2*x(39); Fet=Fet-3*x(39); Cat=Cat-x(34); Sit=Sit-4*x(32)-8*x(33)-2*x(37)-3*x(38); end Mg=Mgt; S=St; Fe=Fet; Ca=Cat; Al=Alt; Si=Sit; %Mg r5=rand(5,1); xMg=(r5/sum(r5))*Mg; x(9)=xMg(1); x(28)=xMg(2); x(29)=xMg(3); x(30)=xMg(4); x(31)=xMg(5); S=S-x(31); Fe=Fe-2*x(29); Ca=Ca-x(9); Al=Al-2*x(28); %S r6=rand(9,1); xS=(r6/sum(r6))*S; x(10)=xS(1); x(11)=xS(2); x(12)=xS(3); x(13)=xS(4); x(14)=xS(5)/3; x(21)=xS(6)/2; x(22)=xS(7)/2; x(23)=xS(8); x(24)=xS(9); Fe=Fe-0.875*x(13)-2*x(14)-x(21)-x(22)-x(23)-x(24); Ca=Ca-x(10)-x(11)-x(12); %Fe r7=rand(6,1); xFe=(r7/sum(r7))*Fe; x(15)=xFe(1)/2; x(16)=xFe(2)/3; x(17)=xFe(3)/5; x(18)=xFe(4); x(19)=xFe(5); x(20)=xFe(6); Al=Al-2*x(17); Si=Si-3*x(17); %Ca r8=rand(4,1); xCa=(r8/sum(r8))*Ca; x(4)=xCa(1); x(5)=xCa(2); x(7)=xCa(3); x(8)=xCa(4); Al=Al-2*x(4)-2*x(5); Si=Si-2*x(4)-7*x(5); %Al r9=rand(2,1); xAl=(r9/sum(r9))*Al; x(1)=xAl(1)/2; x(2)=xAl(2); Si=Si-2*x(1); %Si x(40)=Si; xm(:,i)=x; %%%%%%%%%%%%%%%%%%%% end |
木蟲 (正式寫手)
鐵桿木蟲 (著名寫手)
愚鈍
|
代碼 為了告訴你差別我在你的while循環(huán)處加一個變量k(52和54行為我所加) 把改后的代碼多執(zhí)行幾次你就能發(fā)現(xiàn)問題(while語句執(zhí)行次數(shù)的問題) 目的是看看while循環(huán)什么時候跳出,我發(fā)現(xiàn)當運算時間較長時,始終跳不出while語句 只有生成的隨機數(shù)合理,才會很容易跳出while循環(huán),所以會執(zhí)行快一些,這是一個概率問題,與你是否重啟matlab沒有關(guān)系 |

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 300求調(diào)劑,材料科學英一數(shù)二 +8 | leaflight 2026-03-24 | 8/400 |
|
|---|---|---|---|---|
|
[考研] 081200-11408-276學碩求調(diào)劑 +6 | 崔wj 2026-03-26 | 6/300 |
|
|
[考研] 2026年華南師范大學歡迎化學,化工,生物,生醫(yī)工等專業(yè)優(yōu)秀學子加入! +3 | llss0711 2026-03-28 | 5/250 |
|
|
[考研] 食品工程專碩一志愿中海洋309求調(diào)劑 +4 | 小張zxy張 2026-03-26 | 8/400 |
|
|
[考研] 一志愿中南大學化學0703總分337求調(diào)劑 +5 | niko- 2026-03-27 | 5/250 |
|
|
[考研] 藥學105500求調(diào)劑 +3 | Ssun。。 2026-03-28 | 3/150 |
|
|
[考研] 【求調(diào)劑】085601材料工程專碩 | 總分272 | +6 | 腳滑的守法公民 2026-03-27 | 6/300 |
|
|
[考研] 352分 化工與材料 +5 | 海納百川Ly 2026-03-27 | 5/250 |
|
|
[考研] 330一志愿中國海洋大學 化學工程 085602 有讀博意愿 求調(diào)劑 +3 | wywy.. 2026-03-27 | 4/200 |
|
|
[考研] 考研調(diào)劑 +4 | Sanmu-124 2026-03-26 | 4/200 |
|
|
[考研] 348求調(diào)劑 +4 | 小懶蟲不懶了 2026-03-27 | 5/250 |
|
|
[考研] 一志愿陜師大生物學071000,298分,求調(diào)劑 +5 | SYA! 2026-03-23 | 5/250 |
|
|
[考研] 0703化學求調(diào)劑 +3 | 丹青奶蓋 2026-03-26 | 5/250 |
|
|
[考研] 機械學碩310分,數(shù)一英一,一志愿211本科雙非找調(diào)劑信息 +3 | @357 2026-03-25 | 3/150 |
|
|
[考研] 材料科學與工程 317求調(diào)劑 +4 | JKSOIID 2026-03-26 | 4/200 |
|
|
[考研] 打過很多競賽,085406控制工程300分,求調(diào)劑 +3 | askeladz 2026-03-26 | 3/150 |
|
|
[考研] 296求調(diào)劑 +4 | 汪!?! 2026-03-25 | 7/350 |
|
|
[考研] 086003食品工程求調(diào)劑 +6 | 淼淼111 2026-03-24 | 6/300 |
|
|
[考研] 求調(diào)劑 +6 | 研研,接電話 2026-03-24 | 7/350 |
|
|
[考研] 292求調(diào)劑 +4 | 鵝鵝鵝額額額額?/a> 2026-03-24 | 4/200 |
|