ブロック処理

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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 31 Jan. 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 Kommentar
宗樹 岡本
宗樹 岡本 am 31 Jan. 2022
ご教授ありがとうございました。mean関数のNanについて知ることができました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Logical finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!