How to find local peaks in a 3D plane
1 回表示 (過去 30 日間)
古いコメントを表示
Hello all,
I have a problem in automatically detection of 4 quite obviously present peaks. I transformed my data to a almost flat plane with four peaks in z-direction. I want to automatically detect the locations and corresponding datapoints of the 4 peaks. Does someone know how to solve this problem? I've added my data.
1 件のコメント
dpb
2021 年 6 月 30 日
You could help by supplying the code to do what you've done so far and by telling us what, specifically is the data in the .mat file -- original, transformed by whatever it is you described, ...???
採用された回答
Akira Agata
2021 年 7 月 2 日
How about the following?
% Load data
load('positionsplane.mat');
% Arrange it as a table variable
tData = array2table(positionsplanenew,'VariableNames',{'x','y','z'});
% Extract z > 15
idx = tData.z > 15;
tData2 = tData(idx,:);
% Apply k-means clustering
rng('default');
g = kmeans(tData2{:,:},4);
tData2.group = g;
% Find maximam points for each cluster
peaks = splitapply(@max, tData2.z, tData2.group);
idx = ismember(tData2.z, peaks);
% Visualize the result
figure
scatter3(tData.x, tData.y, tData.z, '.')
hold on
scatter3(tData2.x(idx), tData2.y(idx), tData2.z(idx),'r','filled')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/671978/image.png)
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!