split a matrix into two matrices according to some rule
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Alberto Acri
le 12 Fév 2024
Commenté : Cris LaPierre
le 12 Fév 2024
How can I generate two separate matrices, one containing the coordinates of line A and the other of line B?
load matrix
figure
plot3(matrix(:,1),matrix(:,2),matrix(:,3),'k.','Markersize',5);
axis equal
grid off
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1615461/image.png)
I wanted to try this way but it does not seem the best way.
% range
xRange = [xmin xmax];
yRange = [ymin ymax];
zRange = [zmin zmax];
% indices of points in the range
idx = matrix(:,1) >= xRange(1) & matrix(:,1) <= xRange(2) & ...
matrix(:,2) >= yRange(1) & matrix(:,2) <= yRange(2) & ...
matrix(:,3) >= zRange(1) & matrix(:,3) <= zRange(2);
select_matrix = [matrix(idx,1), matrix(idx,2), matrix(idx,3)];
5 commentaires
Réponse acceptée
Cris LaPierre
le 12 Fév 2024
Modifié(e) : Cris LaPierre
le 12 Fév 2024
I would look into clustering. Here is an attempt that uses dbscan, a spectral clustring algorithm included in the Statistics and Machine Learning Toolbox.
You can learn more about this and other clustering techniques in our Practical Data Science with MATLAB specialization on Coursera. It's free to enroll. Here is a link to the video Introdcution to Clustering Algorithms.
load matrix.mat
% view the raw data
plot3(matrix(:,1),matrix(:,2),matrix(:,3),'k.','Markersize',5);
% use dbscan to identify clusters
idx = dbscan(matrix,1.5,5);
gscatter(matrix(:,1),matrix(:,2),idx)
1 commentaire
Cris LaPierre
le 12 Fév 2024
load matrix.mat
idx = spectralcluster(matrix,2);
gscatter(matrix(:,1),matrix(:,2),idx)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!