I have a 50x4 matrix with the columns being x, y, z, and a value. I want to average each x,y point through the z to convert my 3D data to a 2D.

2 件のコメント

Walter Roberson
Walter Roberson 2017 年 12 月 6 日
Does your data form a regular grid, perhaps 5 x 5 x 2 ?
Or is it scattered data that is not on a grid?
Josh K
Josh K 2017 年 12 月 6 日
It is a 5 x 5 x 2. I eventually want to read in much larger data sets but I want to get a working code for this size first.

サインインしてコメントする。

 採用された回答

Jos (10584)
Jos (10584) 2017 年 12 月 6 日

0 投票

So, you want to ignore the z, and average the values for each specific combination of (x,y)?
xyzv = [1 1 1 10 ; 1 1 2 20 ; 1 2 3 30 ; 1 2 5 40 ; 2 2 4 10] % test data
[xy,~,j] = unique(xyzv(:,[1 2]),'rows') % unique combinations of (x,y)
xyv = [xy accumarray(j,xyzv(:,4),[size(xy,1),1],@mean)] % ignore z, average v

1 件のコメント

Josh K
Josh K 2017 年 12 月 6 日
Works great! Thank you!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeAnimation についてさらに検索

タグ

質問済み:

2017 年 12 月 6 日

コメント済み:

2017 年 12 月 6 日

Community Treasure Hunt

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

Start Hunting!

Translated by