Clear Filters
Clear Filters

how cluster 3D matrix by kmeans() in matlab

9 views (last 30 days)
mary khaliji
mary khaliji on 21 Jul 2015
Answered: Nihal on 28 Jun 2024 at 11:59
I have a 3D matrix, I want to cluster it by kmeans(), how I can do that?

Answers (1)

Nihal
Nihal on 28 Jun 2024 at 11:59
To perform k-means clustering on a 3D matrix in MATLAB, you first need to reshape the matrix into a 2D format that the kmeans() function can work with. Here's a step-by-step guide:
  1. Reshape the 3D matrix into 2D: Flatten the 3D matrix so that each row represents a point in the 3D space.
  2. Apply k-means clustering: Use the kmeans() function on the reshaped data.
  3. Reshape the clustered labels back to 3D: This will give you a 3D matrix of cluster labels.
Here is an example code snippet:
% Assuming your 3D matrix is called 'data' with dimensions [X, Y, Z]
% and you want to cluster it into 'k' clusters.
% Step 1: Reshape the 3D matrix into 2D
[X, Y, Z] = size(data);
data_reshaped = reshape(data, X*Y*Z, 1);
% Step 2: Apply k-means clustering
k = 3; % Number of clusters
[idx, C] = kmeans(data_reshaped, k);
% Step 3: Reshape the clustered labels back to 3D
clustered_data = reshape(idx, X, Y, Z);
% Now 'clustered_data' contains the cluster labels for each point in the original 3D matrix
Notes:
  • The reshape function is used to convert the 3D matrix into a 2D matrix where each row corresponds to a point in the 3D space.
  • kmeans() is applied to the reshaped data.
  • Finally, the cluster labels are reshaped back to the original 3D dimensions.
Make sure to adjust the number of clusters k to fit your specific needs.

Community Treasure Hunt

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

Start Hunting!