24小时热门版块排行榜    

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

lrpe203

新虫 (初入文坛)

[求助] matlab 简化计算程序

CODE:
%初始赋值
Ln=100;  
L=zeros(Ln);

Q=50;
p=0.45;
L(:)=p;
for i=1:Ln
    for j=1:Ln
        if L(i ,j)>rand(1)
            L(i,j)=randi(Q)
        else L(i,j)=0
        end
    end
end

这段程序主要想对L矩阵中数与一个随机数进行比较 然后给这个数重新赋值,这个代码可以运行  但是计算的时间相对很长 请问这个程序 可不可以简化一点 比如用find 语句求下标 然后赋值 进行简化  关键是需要缩短计算时间  求助啊 求助啊 谢谢各位了

[ Last edited by jjdg on 2013-7-13 at 00:50 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tgvictor99

木虫 (知名作家)

迷糊领域荣誉领主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
lrpe203: 金币+10, ★★★★★最佳答案, 谢谢 这个计算速度比我那个不知道提高了多少倍 2013-07-13 18:22:27
xzhdty: 金币+1, 谢谢参与 2013-07-13 21:04:55
jjdg: 编辑内容 2013-07-14 01:49
CODE:
Ln=10;  
L=zeros(Ln);
pps = zeros(Ln,Ln);
Q=50;
p=0.45;
L(:)=p;
pps = L -rand(Ln,Ln);
L( find(pps<=0)) = 0;
L(find(pps>0)) = 1;
L = L.*randi(Q,Ln,Ln)
改进了,可以运行。10*10的例子
L =

     0     6     0     0     0     0    19    10    22     0
     0    49     0     0     0     0     0    31    21    30
    19    26    49    30     0    50     0     0     0    48
    41    47     0     0     0    26    11    22     0    43
     0     0     0    37     0     0     0    26    47     0
     0     0     0     0    23    39    39     0    16    39
     0    42     0    45     0     0    23     0     0    28
    45    43     0     8    11     0    39    25    25     0
     5     0    31     0     0     6     0    12     0     0
     5     0     0    28     0     0    19     0     0     7

[ Last edited by jjdg on 2013-7-14 at 01:49 ]
每个人的人生都是时代的产物。每个人的血统、命运和梦想组成了现在这个时代。
3楼2013-07-13 13:52:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

lrpe203

新虫 (初入文坛)

这里是 L(=P 不是笑脸
2楼2013-07-12 20:49:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见