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

2 ビュー (過去 30 日間)
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.

回答 (2 件)

Matt J
Matt J 2024 年 2 月 26 日
G=findgroups( discretize(Z,edges) );
Fbinned = splitapply(@(z) mean(z,1) , F, G);

Catalytic
Catalytic 2024 年 2 月 26 日
編集済み: Catalytic 2024 年 2 月 26 日
I=findgroups(discretize(Z,edges)) ;
S=sparse(I,(1:numel(I))', 1);
S=S./sum(S,2);
Fbinned = S*F;

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by