Averaging sections of a given column

3 ビュー (過去 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

カテゴリ

Help Center および File ExchangeOperators and Elementary Operations についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!

Translated by