How to sort 3D data into bins?
14 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
wkm42
le 4 Juil 2016
Commenté : Ramesh Venkatasubramanian
le 27 Oct 2020
Hey,
I'm looking for some function like 'gridfunc' in the example beneath.
Datapoints:
x: torque = [12,13,20,30]
y: speed = [512,800,1300,1506]
z: z = [2,2,1,4]
Intervalls of my desired grid:
torque_intervall = [10,20,30]
speed_intervall = [500,1000,1500,2000]
The function im looking for:
output = gridfunc(torque,speed,z,torque_intervall,speed_intervall)
output(torque=10..20,speed=500..1000)= [z(1),z(2)]
Thanks for any suggestions!
0 commentaires
Réponse acceptée
Walter Roberson
le 5 Juil 2016
For each variable, histc() and take the second output, or histcounts() and take the third output. This will be the bin number along that dimension. Now you can use
output = accumarray([firstbinnum(:), secondbinnum(:), thirdbinnum(:)], z(:), [], @(vals) {vals}, {});
The result will be a 3D cell array where the first dimension reflects the bin numbers along the first variable, the second dimension reflects the bin numbers along the second variable, the third dimension reflects the bin number along the third variable. Each element of the cell array will be a cell array of z values that fell into the combination of the three bins; this might be empty if nothing happened to fall into that voxel.
2 commentaires
Plus de réponses (1)
Thorsten
le 4 Juil 2016
Try hist3.
3 commentaires
Star Strider
le 4 Juil 2016
It’s going to be very difficult to create any sort of meaningful interpolation surface from your data:
torque = [12,13,20,30];
speed = [512,800,1300,1506];
z = [2,2,1,4];
figure(1)
stem3(torque, speed, z)
grid on
axis square
view([-60, 30])
xlabel('Torque')
ylabel('Speed')
zlabel('Z')
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!