How do I find similar columns in a matrix?
14 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Raúl Alonso Merino
el 1 de Feb. de 2019
Comentada: Star Strider
el 6 de Feb. de 2019
Hello! So i have a matrix of 32x129600, I mean, there are 129600 columns of 32 elements each. What I want is to find the columns that are similar, let's say the difference between their elements is less than 0.001, how can I do this?
Thank you so much for your answers.
2 comentarios
Respuesta aceptada
Star Strider
el 1 de Feb. de 2019
Editada: Star Strider
el 4 de Feb. de 2019
I would use the pdist (link) function. It will compare the columns of your data using one of the built-in distance metrics, or one you can define.
EDIT — (4 Feb 2019 at 21:50)
Using the matrix you posted (That I will call ‘M’), the pdist call would be:
dr = pdist(M','cityblock'); % Transpose ‘M’ To Compare Columns
Result = squareform(dr)
and the results for this matrix are then:
Result =
0 0.3065 0.8071 1.4538
0.3065 0 0.5030 1.1494
0.8071 0.5030 0 0.6467
1.4538 1.1494 0.6467 0
To find the rows and columns of those values that meet your criterion:
[Row,Col] = find(Result <= 0.001 & Result > 0);
that here returns an empty matrix.
11 comentarios
Más respuestas (1)
KSSV
el 1 de Feb. de 2019
You can have a llok on ismember, ismemebrtol. Also you can use isequal for logical check whether the lements matching exactly. You may also plot a histogram and see. You can run a loop, get the difference and check. There are multiple methods to achieve what you want.
Ver también
Categorías
Más información sobre Matrix Indexing 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!