matlab使程序等待,如何让等待栏在Matlab中工作?

运行

counterend = 10000;

>> h = waitbar(0,'Please wait...');

for i=1:counterend

waitbar(i/counterend)

end

close(h);

在2007a / Windows XP上按预期工作.

另一方面,它将有助于了解被反驳的定义.快速检查的一点是确保您没有将它传递给CELL.

运行

counterend = {10000};

h = waitbar(0,'Please wait...');

for i=1:counterend

waitbar(i/counterend)

end

close(h);

在2007a中产生了不同的错误(见下文),但此错误消息可能在2008年发生了变化.

??? Undefined function or method

‘_colonobj’ for input arguments of

type ‘cell’.

我的最后一点建议是提醒你使用waitbar来处理大型数组/数据集.虽然我认为告知用户进度非常重要,但对我来说还有一个问题是循环中添加了多少时间.使用具有100k条目的数组,我成为了Profiler的宗教用户,以查看实际花费的时间.我可以告诉你时间不在i / X的计算中,而是在更新waitbar的显示时间.为了减轻更新/绘制的影响,我每隔100到1000更新一次等待条,这对我们来说非常有帮助.

编辑:更新了响应以匹配最新代码

我首先开始在匿名函数中攻击这个问题,在过去遇到问题这是我的个人仇恨.在查看函数时我发现你正在使用gamma,你是否将它定义为常量(循环/函数的常量)?我问的原因是’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)

问候,

亚当

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值