Generating more "edges" randomly

3 Ansichten (letzte 30 Tage)
Jonathan
Jonathan am 13 Jul. 2012
I created the code below to generate a matrix (m) with two columns (edgeStart and edgeEnd) that contain 100 random integers each. These integers are the "nodes" and each "edge" is a tuple of two distinct nodes. The start nodes are in the first column, and the end nodes are in the second column. Right now, each start node corresponds to only one end node (ie. there are 100 nodes with 100 edges between them). Is there a way to create more edges (ie. with 100 nodes, have about 250 edges between them)?
clear all
edgeStart = zeros(100,1);
for nodeStart = 1:100
edgeStart(nodeStart) = ceil(100.*rand(1));
edgeStart = edgeStart';
end
edgeEnd = zeros(100,1);
for nodeEnd = 1:100
edgeEnd(nodeEnd) = ceil(100.*rand(1));
edgeEnd = edgeEnd';
end
m = [edgeStart,edgeEnd];
csvwrite('csvtest.csv',m)
type csvtest.csv

Akzeptierte Antwort

Jonathan
Jonathan am 14 Jul. 2012
I figured it out myself. Here is the code:
clear all
numNodes = 100;
numEdges = 250;
edgeStart = zeros(numEdges,1);
for nodeStart = 1:numEdges
edgeStart(nodeStart) = ceil(numNodes.*rand(1));
end
edgeEnd = zeros(numEdges,1);
for nodeEnd = 1:numEdges
edgeEnd(nodeEnd) = ceil(numNodes.*rand(1));
end
sortedEdgeStart = sort(edgeStart,'ascend');
m = [sortedEdgeStart,edgeEnd];
dupCells = find(eq(sortedEdgeStart,edgeEnd))
duplicates = m(dupCells,:)
csvwrite('csvtest.csv',m)
type csvtest.csv

Weitere Antworten (0)

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by