| 3 | 1/1 | 返回列表 |
| 查看: 524 | 回復(fù): 2 | |||
harp木蟲 (正式寫手)
|
[求助]
Matlab循環(huán)的“詭異”問題
|
|
問題:可以運(yùn)行一次兩排“%%%%%%%%%%” 之間的代碼,也就是被循環(huán)語句,而且結(jié)果合理,速度非?欤聪耬nter就能顯示結(jié)果,這應(yīng)該能說明這段代碼沒有問題吧? 可加上for語句后運(yùn)行起來卻不行,運(yùn)行的非常慢,一直busy,等不到結(jié)果;另外,就算把兩排“%%%%%%%%%%” 之間的代碼復(fù)制重新運(yùn)行也不行;使用clear命令清楚后再復(fù)制運(yùn)行也不行,除非重啟matlab才能運(yùn)行。 這是怎么回事??? ![]() ![]() ![]() ![]() 求高人指教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)處加一個(gè)變量k(52和54行為我所加) 把改后的代碼多執(zhí)行幾次你就能發(fā)現(xiàn)問題(while語句執(zhí)行次數(shù)的問題) 目的是看看while循環(huán)什么時(shí)候跳出,我發(fā)現(xiàn)當(dāng)運(yùn)算時(shí)間較長(zhǎng)時(shí),始終跳不出while語句 只有生成的隨機(jī)數(shù)合理,才會(huì)很容易跳出while循環(huán),所以會(huì)執(zhí)行快一些,這是一個(gè)概率問題,與你是否重啟matlab沒有關(guān)系 |

木蟲 (正式寫手)
| 3 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 295材料工程專碩求調(diào)劑 +7 | 1428151015 2026-03-27 | 7/350 |
|
|---|---|---|---|---|
|
[考研] 321求調(diào)劑 +6 | 璞玉~~ 2026-03-25 | 7/350 |
|
|
[考研] 085602 化工專碩 338分 求調(diào)劑 +12 | 路癡小琪 2026-03-27 | 12/600 |
|
|
[考研] 求調(diào)劑 +3 | QiMing7 2026-03-25 | 4/200 |
|
|
[考研] 394求調(diào)劑 +3 | 好事多磨靜候佳?/a> 2026-03-26 | 5/250 |
|
|
[考研] 085600 286分 材料求調(diào)劑 +7 | 麻辣魷魚 2026-03-27 | 8/400 |
|
|
[考研] 材料277求調(diào)劑 +7 | min3 2026-03-24 | 7/350 |
|
|
[考研] 291求調(diào)劑 +15 | hhhhxn.. 2026-03-23 | 21/1050 |
|
|
[考研] 【求調(diào)劑】085601材料工程專碩 | 總分272 | +6 | 腳滑的守法公民 2026-03-27 | 6/300 |
|
|
[考研] 0703化學(xué)/290求調(diào)劑/本科經(jīng)歷豐富/工科也可 +9 | 丹青奶蓋 2026-03-26 | 10/500 |
|
|
[考研] 085701環(huán)境工程求調(diào)劑 +9 | 多久上課 2026-03-27 | 9/450 |
|
|
[考研] 一志愿211院校 344分 東北農(nóng)業(yè)大學(xué)生物學(xué)學(xué)碩,求調(diào)劑 +5 | 丶風(fēng)雪夜歸人丶 2026-03-26 | 8/400 |
|
|
[考研] 305求調(diào)劑 +5 | 哇盧卡庫 2026-03-26 | 5/250 |
|
|
[考研] 081700 調(diào)劑 267分 +11 | 迷人的哈哈 2026-03-23 | 11/550 |
|
|
[考研] 化學(xué)調(diào)劑一志愿上海交通大學(xué)336分-本科上海211 +4 | 小魚愛有機(jī) 2026-03-25 | 4/200 |
|
|
[考研] 07化學(xué)303求調(diào)劑 +5 | 睿08 2026-03-25 | 5/250 |
|
|
[考研] 334分 一志愿武理-080500 材料求調(diào)劑 +4 | 李李不服輸 2026-03-25 | 4/200 |
|
|
[考研] 0854AI CV方向招收調(diào)劑 +4 | 章小魚567 2026-03-23 | 4/200 |
|
|
[考博] 26申博自薦 +3 | whh869393 2026-03-24 | 3/150 |
|
|
[論文投稿] 急發(fā)核心期刊論文 +3 | 賢達(dá)問津 2026-03-23 | 5/250 |
|