24小时热门版块排行榜    

查看: 2412  |  回复: 11
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

可爱水若寒

新虫 (初入文坛)

[求助] matlab 显示busy

从1-8之间取1-8随机取3*10^6,总长为1.64*10^7。程序如下
clear all
c=1;
L1=8; S=1.64*10^7;N1=3*10^6;
while c>0%c是统计产生的随机数里面大于L1的个数,c=0时退出循环.初始值设为1
a=[];
a(1)=round(S*rand(1));
if(a(1)==0)
a(1)=1;
end
a(2)=S-a(1);%先将1分裂为两个随机数
while length(a) m=length(a);
[tt,ss]=sort(-a);
i=ss(1);%选择a中最大值作为分裂位置
%a(i)分裂为a(i)=q*a(i)和a(i+1)=(1-q)*a(i)
a(i+2:m+1)=a(i+1:m);%后移
q=0.2*rand(1)+0.4;
temp=a(i);
a(i)=round(a(i)*q);
if(a(i)==0)
a(i)=1;
end
a(i+1)=temp-a(i);
end
c=sum(a>L1);
end
程序有问题吗  等两个小时都不行 怎样让它快点出结果
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

luomia

木虫 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
臭水沟: 金币+1, 谢谢交流~~ 2012-07-14 21:47:46
可以从以下几点下手:
1.程序优化,例如,你可以先定义参数a的size,这样程序运行会快些;可以参考相关的资料尝试优化程序。
2.提升机器的配置,尽量不要使用笔记本做这种大的运算。
一次次萍水相逢
7楼2012-07-14 09:05:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

xinzhxie

新虫 (小有名气)

程序还在跑,出错会给提示的
在循环里加点打印信息啊
2楼2012-07-13 12:25:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

可爱水若寒

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by xinzhxie at 2012-07-13 12:25:28
程序还在跑,出错会给提示的
在循环里加点打印信息啊

怎样加打印信息,我对matlab不太懂,帮忙弄一下,谢谢
3楼2012-07-13 15:01:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

klausbush

木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢参与! 2012-07-13 22:33:09
matlab帮助文件中搜索print,这个是打印相关的。busy就是程序还在运行啦,等等就好
水中的虫子
4楼2012-07-13 20:04:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见