construction of matrix using specified data sets

I've the following dataset:
node1 =
1
2
3
4
1
node2 =
2
3
4
5
7
cost =
23 for arc(1,2) # arc is a combination of node1 and node2
14 for arc(2,3)
123 for arc(3,4)
111 for arc(4,5)
60 for arc(1,7)
I would like to create a nxm matrix say C with rows and columns being the maximum of (nodes1,nodes2)(in this case it would be 7 so it would be a 7x7 matrix) such that C will have the values of the column vector 'cost' for its respective arcs ( arc is connection between elements of node1 and node2) otherwise it would have a value 0. So my resulting matrix should look like this:
[0 23 0 0 0 0 60;
23 0 14 0 0 0 0;
0 14 0 123 0 0 0;
0 0 123 0 111 0;
0 0 0 111 0 0 0;
0 0 0 0 0 0 0;
60 0 0 0 0 0 0]
I am not sure I can do this using matlab. Please help.

2 Comments

John
John on 15 Jun 2013
Edited: John on 15 Jun 2013
it is already given to me in my data set.

Sign in to comment.

 Accepted Answer

data = [1 2 23; 2 3 14; 3 4 123; 4 5 111; 1 7 60];
T = accumarray(data(:,1:2), data(:,3), max(max(data(:,1:2))) );
T = T + T.';
The above handles the symmetry, except that if there are any arcs from a node to itself the cost value would be twice as high as it should be.

More Answers (1)

out=zeros(7)
out(1,2)=23
out(2,3)=14
out(3,4)=123
out(4,5)=111
out(1,7)=60

Categories

Find more on Function Creation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!