は、我々は、これらの2Dスライスのそれぞれの最小値と最大値を見つける必要があるし、我々は、シングルトンがbsxfun
は、その放送をやらせるために適切に揃える暗くさせるためにpermute
から助けを借りて、ベクトル化の方法でこれらの操作を行うためにbsxfun
を使用することができますジョブ(またはそこにreshape
を使用)。
したがって、実装は次のようになります -
mins = min(reshape(a,[],size(a,3)));
maxs = max(reshape(a,[],size(a,3)));
a_offsetted = bsxfun(@minus, a, permute(mins,[1,3,2]));
a_normalized = bsxfun(@rdivide, a_offsetted, permute(maxs-mins,[1,3,2]))
サンプル入力、出力 -
>> a
a(:,:,1) =
2 8 2 2
8 3 8 2
a(:,:,2) =
8 1 1 5
4 9 8 6
a(:,:,3) =
7 9 3 5
6 2 6 5
a(:,:,4) =
9 3 4 9
7 1 9 9
>> a_normalized
a_normalized(:,:,1) =
0 1.0000 0 0
1.0000 0.1667 1.0000 0
a_normalized(:,:,2) =
0.8750 0 0 0.5000
0.3750 1.0000 0.8750 0.6250
a_normalized(:,:,3) =
0.7143 1.0000 0.1429 0.4286
0.5714 0 0.5714 0.4286
a_normalized(:,:,4) =
1.0000 0.2500 0.3750 1.0000
0.7500 0 1.0000 1.0000
なぜあなたはすべてのことを想定していますスライスは '1'ですか? – excaza
値を '0'と' 1'に正規化していますが、最小値として '0'、最大値として' 1'を与えてはいけませんか? –
すべてのスライスは配列の最小値と最大値を持つことは保証されません。これは0と1になる唯一の値です – excaza