Averaging sections of a given column

2 ビュー (過去 30 日間)
Thishan Dharshana Karandana Gamalathge
編集済み: Image Analyst 2017 年 7 月 28 日
Suppose I have a column vector A=[1 3 -999 4 9 8 -999 3 5]; I need to get average of each 3 sections. The problem is, if any section contains -999, I need to avoid it and get the average of rest of the numbers. For an example, for the 1st three numbers, average has to be (1+3)/2.
Please help me with that. Thanks.
  3 件のコメント
Thishan Dharshana Karandana Gamalathge
Thanks. But using this code, if there were three -999 somewhere in the middle, that section will be replaced by the avg of next three. At the same time, if there are three -999 at the end, it will be not shown at all. In those cases, let's put NaN so that I know which sections had three consecutive -999. Consider the following to help me with coding.
A=[1 3 -999 -999 -999 -999 4 9 8 -999 -999 -999]; The correct answer I am expecting is B=[2 NaN 7 NaN]
Thanks.
Image Analyst
Image Analyst 2017 年 7 月 28 日
編集済み: Image Analyst 2017 年 7 月 28 日
That seems inadvisable. Why do you want nans in there instead of the very simple approach I showed you below?????
MSP, that should have been in the answer section below since you intended it as an answer rather than a comment (like asking for more information).

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

回答 (1 件)

Image Analyst
Image Analyst 2017 年 7 月 28 日
If you have the Image Processing Toolbox you can use regionprops():
A=[1 3 -999 4 9 8 -999 3 5]
props=regionprops(A~=-999, A, 'MeanIntensity');
sectionMeans = [props.MeanIntensity]
You get:
sectionMeans =
2 7 4

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!

Translated by