Apply filter to matrix blocks
For each r x c overlapping subblock of A, add a column in matrix C f(C,...) should return a row vector which is then reshaped into a a matrix of size A and returned. A is processed in chunks of size m x n. — Function File: colfilt (A, [r, c], [m, n], 'distinct', f,...)
For each r x c non-overlapping subblock of A, add a column in matrix C f(C,...) should return a matrix of size C each column of which is placed back into the subblock from whence it came. A is processed in chunks of size m x n.
The present version requires [m, n], but for compatibility it should be optional. Use colfilt(A,[r, c], size(A),...)
The present version requires that [m, n] divide size(A), but for compatibility it should work even if [m, n] does not divide A. Use the following instead:
[r, c] = size(A); padA = zeros (m*ceil(r/m),n*ceil(c/n)); padA(1:r,1:c) = A; B = colfilt(padA,...); B = B(1:r,1:c);The present version does not handle 'distinct'