【问题标题】:matlab more efficient random links creationmatlab更高效的随机链接创建
【发布时间】:2013-04-27 11:41:41
【问题描述】:

我有这个部分可以在组中创建一些随机链接。我可以让它更有效率吗?有什么想法吗?

谢谢。

n=[10 ;10 ;10];
no_of_groups=size(n,1);
for k=1:no_of_groups
    if k==1
        m{k,1}=randi(n(1), n(1),2);%random links between nodes of group1
        m1=rand(n(1),1)/2+0.5;%random weight to edges
        c{k,1} = cat(2,m{1},m1);
    else
        m{k,1}=randi([((k-1)*n(k-1)+1) (k*n(k))],n(k),2););%random links between nodes of group k
        m1=rand(n(k),1)/2+0.5;
        c{k,1} = cat(2,m{k,1},m1);
    end
end
c=cat(1,c{:});

【问题讨论】:

    标签: matlab random graph matrix


    【解决方案1】:

    一个快速的解决方法是preallocate mc 并在循环外初始化 它们以删除 if 条件:

    n  = [10 ;10 ;10];
    no = size(n,1);
    
    % Preallocate
    m = cell(no,1);
    c = cell(no,1);
    
    % Initialize m and c
    m{1} = randi(n(1), n(1),2);%random links between nodes of group1
    m1   = rand(n(1),1)/2+0.5;%random weight to edges
    c{1} = cat(2,m{1},m1);
    
    for k = 2:no
            m{k} = randi([(k-1)*n(k-1)+1 k*n(k)],n(k),2);%random links between nodes of group k
            m1   = rand(n(k),1)/2+0.5;
            c{k} = cat(2,m{k,1},m1);
    end
    c=cat(1,c{:});
    

    这个循环是矢量化的,或者至少你可以避免使用单元格,这应该会进一步提高速度。

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 2014-01-22
      • 2015-02-13
      • 2014-04-28
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      相关资源
      最近更新 更多