Lithium
Lithium

Reputation: 223

Objects arranged as a graph

I want to arrange many objects of a certain class as a graph in Matlab. The goal is, that when I create a new object it automatically is added to the graph. However, as far as I can see graphs only accept numbers when I add a new node. How is typically dealt with it? Should I have a GroupClass that holds all the objects and a graph with the relations? What I would like to have is something like

G = graph()
O1 = createObject(G)
O2 = createObject(G)

and in createObject something like

...
G.addnode(O1)
G.addedge(O1,O2)
...

Afterwards I want to be able to plot the relations, print out groups or all nodes, etc.

Upvotes: 2

Views: 55

Answers (1)

Edric
Edric

Reputation: 25140

You can do this by adding nodes as a "node properties" table. Here's a very simple example:

G = graph();
for idx = 1:10
    % make a single-row table containing the name and data
    % associated with this node
    nodeProps = table({['Idx ', num2str(idx)]}, ...
        MException('msg:id', sprintf('Message %d', idx)), ...
        'VariableNames', {'Name', 'Data'});
    G = addnode(G, nodeProps);
end
for idx = 2:10
    % add edges based on the node names
    G = addedge(G, 'Idx 1', sprintf('Idx %d', idx));
end
plot(G)

Upvotes: 2

Related Questions