运行
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)
问候,
亚当