Matrix creation which identify link of vehicles

1 view (last 30 days)
Hello.
I've a matrix 61312*3.
1st column: from 1 to 81 (Origin place of a vehicle) 2nd column: from 1 to 81 (Destination place of a vehicle) 3rd column: from 1 to 246 (where the vehicle has surveyed)
There are 61312 observation (no. of rows) at 246 locations.
I need to create a matrix which shows that from origin (1 to 81) to Destination (1 to 81) which location (1 to 246) these vehicle follow. I think the order of the matrix will be 81*81.
Kindly let me know how should I proceed. thanks in advance.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 4 Jul 2014
Edited: Andrei Bobrov on 4 Jul 2014
[a,~,ii] = unique(A(:,2));
[b,~,jj] = unique(A(:,3));
out1 = accumarray([ii,jj],A(:,1),[max(ii), max(jj)],@(x){x});
out = [[{nan};num2cell(a(:))],[num2cell(b(:)');out1]];
  5 Comments
Fayyaz
Fayyaz on 4 Jul 2014
@Andrei Bobrov: The order of matrix is 81*246 which is fine, but the problem is in one cell there is a lot of information like brackets, value*double etc.
Fayyaz
Fayyaz on 4 Jul 2014
Edited: Fayyaz on 4 Jul 2014
I've modified the code, as I need a matrix 81*81, but still I don't know how to get rid of such kind of values like 440x1 double
A=combinedfile;
[a,~,ii] = unique(A(:,1));
[b,~,jj] = unique(A(:,2));
out1 = accumarray([ii,jj],A(:,3),[max(ii), max(jj)],@(x){x});
out = [[{nan};num2cell(a(:))],[num2cell(b(:)');out1]];

Sign in to comment.

More Answers (1)

Jos (10584)
Jos (10584) on 11 Jul 2014
M = accumarray(A(:,[2 3]), A(:,1), [81 81], @(x) {x})

Categories

Find more on Phased Array Design and Analysis 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!