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.

 Respuesta aceptada

Guillaume
Guillaume el 16 de Mzo. de 2015
Editada: Guillaume el 16 de Mzo. de 2015
'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 comentario

Heejun Yoo
Heejun Yoo el 17 de Mzo. de 2015
Editada: Heejun Yoo el 17 de Mzo. de 2015
Thank you very much for your assistance.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Centro de ayuda y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Preguntada:

el 16 de Mzo. de 2015

Editada:

el 17 de Mzo. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by