運行
counterend = 10000;
>> h = waitbar(0,'Please wait...');
for i=1:counterend
waitbar(i/counterend)
end
close(h);
工程在2007年a/Windows XP作爲預期。
在旁註中,它將有助於瞭解被反作用的定義爲。快速檢查的一件事就是確保你沒有將它傳遞給CELL。
運行
counterend = {10000};
h = waitbar(0,'Please wait...');
for i=1:counterend
waitbar(i/counterend)
end
close(h);
單產2007年a不同的錯誤(見下文),但該錯誤消息可以在2008年
已經改變???未定義的函數或方法 '_colonobj'用於 類型'cell'的輸入參數。
我最後一點的建議是警告你使用waitbar的大型數組/數據集。雖然我認爲向用戶通知進展情況非常重要,但對於我而言,還需要考慮向循環添加多少時間。使用具有100k +條目的數組,我成爲Profiler的宗教用戶,查看時間真正花在哪裏。我可以告訴你,時間不在計算I/X,它是在更新等待欄的顯示。爲了減輕更新/汲取的衝擊,我每隔100到1000條就更新一次waitbar,這對幫助非常大。
編輯:更新響應,以配合最新的代碼
我第一次開始在匿名函數來攻擊該問題,在過去與他們的問題這是我個人的仇殺。當看着這個函數,我發現你正在使用伽瑪,你有這個定義爲一個常量(循環/函數常量)?我要問的原因是'gamma'是一個Matlab函數,在嘗試運行你自己的函數時給了我錯誤。下面我修改了你的代碼,並且在這裏運行得很好。如果我提出的任何假設都是錯誤的,請讓我知道。另外,如果你打算使用gamma函數,你的函數會丟失任何參數。希望這可以幫助!
clc
h = waitbar(0,'Please wait...');
counterend = 1000;
waitbarcounter = counterend;
g_amma = 7;
At = 34;
step = 2;
Tc = 42;
for i=1:counterend
waitbar(i/waitbarcounter)
Atemp = At+i*step;
handle = @(M) 1/M^2*((2/(g_amma+1))*(1+(g_amma-1)*M^2/2))^((g_amma+1)/(g_amma-1))-(Atemp/At)^2;
Mach = fzero(handle, 5);
Aplot(i) = Atemp/At;
Tplot(i) = Tc/(1+(g_amma-1)*Mach^2/2);
Mplot(i) = Mach;
plot(Aplot, Tplot)
end
close(h)
問候,
亞當
您的示例在OSX上的R2010a上運行得非常好。你檢查過你的例子嗎?另外,你確定'counterend'是一個標量double嗎? – Jonas 2010-08-26 14:03:57
請不要我大幅改變我的問題。這可能會使一些答案在useles下面。我非常抱歉,如果我應該浪費任何人的時間,對於Stackoverflow來說是相當新的。如果有人認爲刪除是有意義的,我會繼續投票。 – Ingo 2010-08-28 10:33:25