ブロック処理

조회 수: 1 (최근 30일)
宗樹 岡本
宗樹 岡本 2022년 1월 31일
댓글: 宗樹 岡本 2022년 1월 31일
ブロック処理に関しての質問です。
例えば、3×3でのブロック処理を行う際、NaNをのぞいた計算をするためfunctionでomitnanを使用したいと考えていますが、その時計算上分母の数は変わらないのですか?nanが含まれている箇所も分母は9になるのですか?それともnanが除外されるのですか?
初歩的な質問だと思いますが、ご教授お願い致します。
  댓글 수: 2
Atsushi Ueno
Atsushi Ueno 2022년 1월 31일
具体的にどのToolboxの(またはMATLABの)何という関数について質問していますか?
宗樹 岡本
宗樹 岡本 2022년 1월 31일
例えばですが、
fun = @(block_struct) ...
uint8(mean2(block_struct.data,[1 2],"omitnan")*...
ones(size(block_struct.data)));
I = blockprock(A,[3 3],fun]
このような際、nanを除外して3×3ずつブロック処理が行われると解釈しています。ですが、nanを含むブロックではどのような計算が行われているのかがわからないので、ご教授お願い致します。

댓글을 달려면 로그인하십시오.

채택된 답변

Atsushi Ueno
Atsushi Ueno 2022년 1월 31일
>計算上分母の数は変わらないのですか?nanが含まれている箇所も分母は9になるのですか?それともnanが除外されるのですか?
⇒NaNが除外され、残った数値の和を残った数値の個数で割った結果が得られます。
【解説】
blockproc関数はNaNの有無に関わらず一連の処理をするだけなので本質問にblockproc関数は無関係です。
「mean関数の'omitnan'オプションがどのように振る舞うのか?」という質問に帰結します。
mean2([1 2 3; 4 5 6; 7 8 NaN]) % mean2関数に'omitnan'オプションは設定不可
ans = NaN
mean([1 2 3; 4 5 6; 7 8 NaN], [1 2]) % mean2関数と同じ意味。NaNが含まれると結果もNaNになる
ans = NaN
mean([1 2 3; 4 5 6; 7 8 NaN], [1 2], 'omitnan') % 1+2+...+8 = 36, 36/4.5 = 8
ans = 4.5000
  댓글 수: 1
宗樹 岡本
宗樹 岡本 2022년 1월 31일
ご教授ありがとうございました。mean関数のNanについて知ることができました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!