我需要建立一个有600个神经元的网络模型每个神经元可以有4个输入连接神经元的输入来自M个(待计算)纤维,每根纤维可以给atmost 53个输出连接到神经元神经元得到的每一个连接必须来自不同的纤维(没有两个纤维应该连接到同一个神经元)。每个神经元必须有4个输入,并且应该看到没有两个神经元从所有4个相同的纤维获得连接,使用的纤维数量必须尽可能少。
P.S:我认为我可以构造一个600×M的二进制矩阵,使得每行的和是4,每个列的和是最大的53。你是怎么用Matlab或者其他方法来做的。谢谢。

最佳答案

在这里,一个简单的方法来构造一个二进制矩阵(600×m)非零行的和正好是4,每列的和将是53(或更低,如果我理解正确的话),直到有更多的行要填充,使它们的和是4:

m=12;
A=zeros(600,m);
cind=randperm(size(A,1));

for n=1:numel(cind)
        ind=find(sum(A)<53);
        try
            A(cind(n),ind(randperm(numel(ind),4)))=1;
        catch err
        end
end

关于algorithm - 创建沿行和列具有恒定总和的二维二进制矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23947759/

10-12 23:07