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

木蟲 (正式寫手)
| 3 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 11408軟件工程求調(diào)劑 +3 | Qiu學(xué)ing 2026-03-28 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 347求調(diào)劑 +3 | 山頂見α 2026-03-25 | 3/150 |
|
|
[考研] 070300求調(diào)劑306分 +4 | 26要上岸 2026-03-27 | 4/200 |
|
|
[考研] 調(diào)劑 +3 | 好好讀書。 2026-03-28 | 3/150 |
|
|
[材料工程] 一志愿C9材料與化工專業(yè)總分300求調(diào)劑 +8 | 曼111 2026-03-24 | 9/450 |
|
|
[考研] 328求調(diào)劑 +7 | 嗯滴的基本都 2026-03-27 | 7/350 |
|
|
[考研] 315分求調(diào)劑 +7 | 26考研上岸版26 2026-03-26 | 7/350 |
|
|
[考研] 一志愿上海理工能源動(dòng)力(085800)310分求調(diào)劑 +3 | zhangmingc 2026-03-27 | 4/200 |
|
|
[考研] 化學(xué)調(diào)劑 +4 | 愛吃番茄的旭 2026-03-24 | 5/250 |
|
|
[考研] 07化學(xué)280分求調(diào)劑 +10 | 722865 2026-03-23 | 10/500 |
|
|
[考研] 287求調(diào)劑 +10 | land xuxu 2026-03-26 | 10/500 |
|
|
[考研] 317求調(diào)劑 +7 | 蛋黃咸肉粽 2026-03-26 | 7/350 |
|
|
[考研] 333求調(diào)劑 +6 | wfh030413@ 2026-03-23 | 6/300 |
|
|
[考研] 總分322求生物學(xué)/生化與分子/生物信息學(xué)相關(guān)調(diào)劑 +5 | 星沉uu 2026-03-26 | 6/300 |
|
|
[考研] 機(jī)械學(xué)碩310分,數(shù)一英一,一志愿211本科雙非找調(diào)劑信息 +3 | @357 2026-03-25 | 3/150 |
|
|
[考研] 334分 一志愿武理 材料求調(diào)劑 +4 | 李李不服輸 2026-03-26 | 4/200 |
|
|
[考研] 一志愿 南京郵電大學(xué) 288分 材料考研 求調(diào)劑 +3 | jl0720 2026-03-26 | 3/150 |
|
|
[考研] 080500求調(diào)劑 +3 | zzzzfan 2026-03-24 | 3/150 |
|
|
[考研] 328求調(diào)劑 +4 | LHHL66 2026-03-23 | 4/200 |
|
|
[考研] 275求調(diào)劑 +6 | shansx 2026-03-22 | 8/400 |
|