3D image stack; determine mean of individual arrays; error code
7 ビュー (過去 30 日間)
古いコメントを表示
Hi,I have a 1000x1000x1952 uint8 3D image array (Array), and would like to get the mean value of each individual array "image" and subsequently put these in a 1952x1 array (meanArray).
The code I use is:
meanArray= mean(Array,[1 2])
the error code I get is: Error using sum "Dimension argument must be a positive integer scalar within indexing range. Error in mean (line 87) y = sum(x,dim,flag);"
What am I missing here? Thanks! Barry
0 件のコメント
採用された回答
Matt J
2018 年 10 月 5 日
編集済み: Matt J
2018 年 10 月 5 日
For some reason, mean was not written to let you operate along multiple dimensions in the same call. One alternative is to use sepblockfun (Download).
[m,n,p]=size(Array);
meanArray = sepblockfun(Array, [m,n,1], 'mean');
2 件のコメント
Matt J
2018 年 10 月 9 日
@Janssen, if you look inside sepblockfun, you will see that it is equivalent to Stephen's proposal, but more general, in that it allows you take means/maxes over different block sizes. There is some overhead from this additional flexibility, which is why you might see slightly slower performance.
その他の回答 (2 件)
Stephen23
2018 年 10 月 5 日
squeeze(mean(mean(Array,1),2))
2 件のコメント
Stephen23
2018 年 10 月 9 日
編集済み: Stephen23
2018 年 10 月 9 日
@B Janssen: so you actually used my faster answer, but accepted Matt J's answer that you did not use? Confusing.
Note that you can also vote for answers, which is any easy way to show thanks to the volunteers who helped you. It is nice to get a vote as a small sign of appreciation.
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!