ブロック処理

3 visualizaciones (últimos 30 días)
宗樹 岡本
宗樹 岡本 el 31 de En. de 2022
Comentada: 宗樹 岡本 el 31 de En. de 2022
ブロック処理に関しての質問です。
例えば、3×3でのブロック処理を行う際、NaNをのぞいた計算をするためfunctionでomitnanを使用したいと考えていますが、その時計算上分母の数は変わらないのですか?nanが含まれている箇所も分母は9になるのですか?それともnanが除外されるのですか?
初歩的な質問だと思いますが、ご教授お願い致します。
  2 comentarios
Atsushi Ueno
Atsushi Ueno el 31 de En. de 2022
具体的にどのToolboxの(またはMATLABの)何という関数について質問していますか?
宗樹 岡本
宗樹 岡本 el 31 de En. de 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を含むブロックではどのような計算が行われているのかがわからないので、ご教授お願い致します。

Iniciar sesión para comentar.

Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 31 de En. de 2022
>計算上分母の数は変わらないのですか?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 comentario
宗樹 岡本
宗樹 岡本 el 31 de En. de 2022
ご教授ありがとうございました。mean関数のNanについて知ることができました。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!