ブロック処理に関しての質問です。
例えば、3×3でのブロック処理を行う際、NaNをのぞいた計算をするためfunctionでomitnanを使用したいと考えていますが、その時計算上分母の数は変わらないのですか?nanが含まれている箇所も分母は9になるのですか?それともnanが除外されるのですか?
初歩的な質問だと思いますが、ご教授お願い致します。

2 Commenti

Atsushi Ueno
Atsushi Ueno il 31 Gen 2022
具体的にどのToolboxの(またはMATLABの)何という関数について質問していますか?
宗樹 岡本
宗樹 岡本 il 31 Gen 2022
例えばですが、
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を含むブロックではどのような計算が行われているのかがわからないので、ご教授お願い致します。

Accedi per commentare.

 Risposta accettata

Atsushi Ueno
Atsushi Ueno il 31 Gen 2022

1 voto

>計算上分母の数は変わらないのですか?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 Commento

宗樹 岡本
宗樹 岡本 il 31 Gen 2022
ご教授ありがとうございました。mean関数のNanについて知ることができました。

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!