how cluster 3D matrix by kmeans() in matlab

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

Answers (1)

Hornett
Hornett on 28 Jun 2024
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.

Categories

Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!