%% Numerical simulation for the symmetry measure. Uniform distribution function [s] = sym_measure (matrix) %% %Parameters and variables necessary for running this code without external call. Also a loop over the value of a is needed %n_samples = 10000; %number of matrixes in the sample %N = 200; %number of neurons %max_w = 1; %a = 0:0.1:0.9; %pruning values %number_points = size(a,2); %number of points in the plot %sample_mean = zeros(number_points); %sample_variance = zeros(number_points); %% %symm = zeros(1,n_samples); %for iter = 1:n_samples %sample_matrix = max_w .* rand(N) .* (rand(N) > a); %generate a random NxN matrix from zero to max_w and introduce pruning a upper = triu(matrix,1); %extract the upper triangle matrix lower = tril(matrix,-1)'; %extract the lower triangle matrix and transpose it x = upper(:); %convert the matrix into a vector y = lower(:); %convert the matrix into a vector temp = x + y; %sum vector elements==sum the reciprocal elements of the matrix nonzero_index = find(temp~=0.); %create a vector whoose elements are the index of the non zero elements in temp K = length(nonzero_index); %counts how many elements of temp are nonzero==counts the number of pairs connections for which at least one direction is nonzero if K > 0 s = 1 - sum ( abs(x(nonzero_index)-y(nonzero_index)) ./ (x(nonzero_index)+y(nonzero_index)) ) / K; else s = 0; end %sprintf('Point number %d iteration number %d',n,iter) %end %sample_mean = mean(symm); %sample_variance = var(symm);