(および非推奨blkproc
が)Image Processing Toolboxで両方の機能しているあなたが分割したい場合は、私が
...私は追加のツールボックスを必要としない基本的なMATLABのソリューションを追加しようと思いましたマトリクスをサブマトリクスに分割する方法の1つは、mat2cell
を使用してマトリクスを分割し、各サブマトリクスをセル配列のセルに格納することです。あなたのケースでは、構文は次のようになります。
C = mat2cell(I, [128 128], [128 128]);
C
今、各セルはI
の128・バイ・128部分行列を保存すると2行2列のセル配列です。各セルで操作を実行する場合は、関数cellfun
を使用します。たとえば、あなたは、各部分行列内の値の平均を取るしたい場合は、次の操作を行います。
meanValues = cellfun(@(x) mean(x(:)), C);
最初の引数はまず列ベクトルに、各部分行列を整形し、anonymous functionからfunction handleです平均を取る。出力は、各部分行列の平均値の2行2列の行列です。あなたはcellfun
に渡す関数は、セル毎に異なるサイズや種類の出力を作成した場合、cellfun
はそれらを連結し、問題を持っていますし、エラーがスローされます:あなたは、コールの終わりまでに..., 'UniformOutput', false);
を追加する場合
??? Error using ==> cellfun
Non-scalar in Uniform output, at index 1, output 1.
Set 'UniformOutput' to false.
をcellfun
である場合、上記の場合の出力は、各サブマトリックスで演算を実行した結果を含むセル配列の2行2列のセル配列になります。
Image Processing Toolboxの古いバージョンをBLKPROC関数で使用している場合、上記の例の構文は次のように変更されます: 'B = blkproc(I、[8 8]、@(x)mean( x(:))); ' – gnovice