MATLAB: Manipulating a sub-matrix

submatirx

I have the following way of subarray manipulation. I have an array called arr of dimension rxc, i loop goes from 1 to r-n, j loop goes from 1 to c-n, and I use as:
x=somefn(arr(i:i+n-1,j:j+n-1)(:),a);
I am getting error stating: cannot call or index to a temporary array at the :, please suggest remedy.

Best Answer

You can't chain indexing operations, so you can either create a temporary variable
subarr = arr(i:i+n-1, j:j+n-1);
x = somefn(subarr(:), a);
Or, since the colon here just does a reshape, call reshape explicitly:
x = somefn(reshape(arr(i:i+n-1, j:j+n-1), [], 1), a);