How to get the adjacency matrix from a cell array of strings?

1 visualización (últimos 30 días)
Hi friends, I'm so sorry for asking multiple questions in a short time. i have this cell array of size(60*2), and i want to get the adjacency matrix from this cell array. i have tried sparse and accumarray but i get the following error :
accumarray(AA+1,1)
or
sparse(AA(:,1)+1,AA(:,2)+1,1)
Undefined function 'plus' for input arguments of type 'cell'.
Error in adj (line 5) sparse(AA(:,1)+1,AA(:,2)+1,1) Error in adj (line 5) accumarray(AA+1,1);

Respuesta aceptada

Guillaume
Guillaume el 25 de Mayo de 2017
If you're using a very ancient matlab version such as R2012a, then mention it in your question.
This would work on R2012a:
[nodenames, ~, id] = unique(AA(:));
adj = accumarray(reshape(id, size(AA)), 1, [numel(nodenames), numel(nodenames)]);
rows and columns of adj are in order of nodenames.

Más respuestas (1)

Walter Roberson
Walter Roberson el 25 de Mayo de 2017
adj = adjacency(graph(AA(:,1),AA(:,2)));
  22 comentarios
Walter Roberson
Walter Roberson el 1 de Jun. de 2017
Editada: Walter Roberson el 6 de Jun. de 2017
Change the all() to any()
However! You are using directed graphs, and just because nothing links to a particular node does not mean that the node is isolated: it might itself have links to other nodes.
When you remove columns but not rows then you distort the meaning.
If you have a square matrix perhaps you should be using
mask = any(Adjacency_Matrix_mod1,1) | any(Adjacency_Matrix_mod1,2);
new_adj = Adjacency_Matrix_mod1(:,mask);
new_nodenames = nodenames1(mask);
This will not remove an all-zero column unless the corresponding row is also empty
chocho
chocho el 6 de Jun. de 2017
@Walter Roberson, I think you are good at graphs,i opened a new question ,could you Plz check the adjacency matrix and transition i shared. With my respect to you!

Iniciar sesión para comentar.

Categorías

Más información sobre 稀疏矩阵 en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!