Hi Valentin, Thanks a lot for your suggestion! It makes exactly what I need, with a clear code. I still don't know if efficiency will be an issue for my problems, but I hope it won't.
Just don't agree with your advice to only post in one place. Is there any special reason for it besides the overlap of users? I see some differences between asking in the mailing-list or in stackoverflow, even if there is an overlap between of users of both forums. In stackoverflow there is kind of a competition of the best responses that I think is interesting, we can learn a lot from everyone there. And I think it is not the focus of this list. Just my opinion. By the way, the final solution for my problem is the following piece of code: using Images function findMat(mat,value) return(collect(zip(ind2sub(size(mat),find( x -> x == value, mat))...))); end mat = [1 1 0 0 0 ; 1 1 0 0 0 ; 0 0 0 0 1 ; 0 0 0 1 1] labels = label_components(mat); for c in 1:maximum(labels) comp = findMat(labels,c); println("Component $c is composed by the following elements (row,col)"); println("$comp\n"); end Thanks again for your help! Best, Charles On 25 September 2015 at 09:07, Valentin Churavy <v.chur...@gmail.com> wrote: > Hej Charles, > > in the future please only post in one place. A lot of the people who > answer on SO are also here. > > You can use the label_components function in Images.jl > https://github.com/timholy/Images.jl/blob/master/doc/function_reference.md#label_components > To get the the list of coordinates for each components you then would have > to do something along the line of. > > for c in 1:maximum(labels) > find(x-> x == c, labels) > end > > Not very efficient but that should get you started. > > On Friday, 25 September 2015 07:56:20 UTC+9, Charles Santana wrote: >> >> Assume I have the following matrix: >> >> mat = [1 1 0 0 0 ; 1 1 0 0 0 ; 0 0 0 0 1 ; 0 0 0 1 1] >> >> Considering as a "component" a group of neighbour elements that have >> value '1', how to identify that this matrix has 2 components and which >> vertices compose each one? >> >> For the matrix *mat* above I would like to find the following result: >> >> Component 1 is composed by the following elements of the matrix >> (row,column): >> >> (1,1) >> (1,2) >> (2,1) >> (2,2) >> >> Component 2 is composed by the following elements: >> >> (3,5) >> (4,4) >> (4,5) >> >> I can use Graph algorithms like this >> <http://graphsjl-docs.readthedocs.org/en/latest/algorithms.html#connected-components> >> to identify components in square matrices. However such algorithms can not >> be used for non-square matrices like the one I present here. >> >> Any idea will be much appreciated. >> >> I am open if your suggestion involves the use of a Python library + >> PyCall for example. Although I would prefer to use a pure Julia solution. >> >> Regards >> Charles >> P.S.: Just asked the same question in Stackoverflow: >> https://stackoverflow.com/questions/32772190/how-to-find-connected-components-in-a-matrix-using-julia >> >> -- >> Um axé! :) >> >> -- >> Charles Novaes de Santana, PhD >> http://www.imedea.uib-csic.es/~charles >> > -- Um axé! :) -- Charles Novaes de Santana, PhD http://www.imedea.uib-csic.es/~charles