How I can make linked array with matlab?

Recently, I try to make multiple(?) linked array.
for example,
idxA = [1, 2, 3, 4, 5] idxB = [6, 7, 8]
I would like to build new array which can represent linked information between idxB and idxA. idxB elements can linked more than one idxA.
6|-> 1, 7|->4, 7|->1, 8|->2, 8\->5, 8|->3, ...
Finally, I would like to get array as below
result = [1, [4,1], [2,5,3]]
How I can make it.
I hope that many of you will participate. Thank you.

 Akzeptierte Antwort

Guillaume
Guillaume am 16 Mär. 2015
Bearbeitet: Guillaume am 16 Mär. 2015

1 Stimme

'linked array' does not mean anything in matlab or any language that I know. Maybe you mean linked list, matlab does not have that.
Anyway, your mapping between A and B can be simply defined by a two-column matrix:
link = [6 1
7 4
7 1
8 2
8 5
8 3]; %doesn't even have to be ordered
Your result would be have to be a cell array, which you can create any number of ways. The shortest (but maybe not the easiest to understand if you're not familiar with accumarray) would be:
idxB = [6 7 8];
link = [6 1; 7 4; 7 1; 8 2; 8 5; 8 3];
[~, Brow] = ismember(link(:, 1), idxB);
result = accumarray(Brow, link(:, 2), [], @(v) {v'})';
celldisp(result)
Another way, not using accumarray or ismember:
idxB = [6 7 8];
link = [6 1; 7 4; 7 1; 8 2; 8 5; 8 3];
result = cell(size(idxB));
for idx = 1:numel(idxB)
result{idx} = link(link(:, 1) == idxB(idx), 2)';
end
celldisp(result)

1 Kommentar

Heejun Yoo
Heejun Yoo am 17 Mär. 2015
Bearbeitet: Heejun Yoo am 17 Mär. 2015
Thank you very much for your assistance.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrices and Arrays finden Sie in Hilfe-Center und File Exchange

Tags

Noch keine Tags eingegeben.

Gefragt:

am 16 Mär. 2015

Bearbeitet:

am 17 Mär. 2015

Community Treasure Hunt

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

Start Hunting!

Translated by