Discretizing a column array, and performing operations on elements of another column array of the same length that lie in the same bins as the original one

4 vues (au cours des 30 derniers jours)
I have a data array that is composed of column vectors X, Y, & Z (coordinates) and an array F that has one or multiple columns of the same length. The number of rows of A is usually in the order of 100k to even a couple of million, so that I need to reduce this number to a fraction of that. Let's assume:
A=[X Y Z F]
X, Y & Z are column vectors of length i, and F is an array with i rows and j columns.
Using the discretize command,I would like to discretize column Z into a column with a lower number of rows (let's say going from i rows to only i/1000 rows), and I would like to calculate the average value of every individual coumn of F that lies in the same bin as the discretized Z.

Réponses (2)

Matt J
Matt J le 26 Fév 2024
G=findgroups( discretize(Z,edges) );
Fbinned = splitapply(@(z) mean(z,1) , F, G);

Catalytic
Catalytic le 26 Fév 2024
Modifié(e) : Catalytic le 26 Fév 2024
I=findgroups(discretize(Z,edges)) ;
S=sparse(I,(1:numel(I))', 1);
S=S./sum(S,2);
Fbinned = S*F;

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by