MATLAB: What can i do for this problem

matrix arrayshifting

i want to use circshift on each 4096 blocks. each block has 8×8. what can i do?
example :
val(:,:,1) =
1.0e+003 *
1.5601 -0.0420 0.0307 -0.0164 -0.0116 -0.0204 -0.0001 -0.0001
-0.0117 0.0063 -0.0138 -0.0298 -0.0134 -0.0001 0.0009 0.0003
-0.0000 -0.0066 -0.0154 0.0001 -0.0002 -0.0007 0.0000 0.0001
0.0139 0.0092 0.0001 -0.0004 0.0006 0.0000 0.0001 -0.0002
0.0001 0.0003 0.0004 -0.0003 -0.0001 0.0005 -0.0000 0.0003
-0.0002 0.0001 0.0001 -0.0003 -0.0003 0.0003 0.0000 0.0001
-0.0004 -0.0003 -0.0002 -0.0002 -0.0001 -0.0004 -0.0001 0.0001
0.0001 -0.0004 -0.0000 0.0002 -0.0000 -0.0002 0.0002 0.0003
until
val(:,:,4096) =
888.0000 -17.6230 -5.2495 -0.4683 0 0.0909 -0.2610 -0.2792
18.2375 12.0902 -14.1269 -10.2305 -13.2117 -0.1457 -0.2282 0.0176
-6.8663 6.7403 8.3676 11.7774 -0.3663 0.1670 -0.3018 -0.3649
20.8197 -0.1267 -10.9207 0.2049 -0.1160 -0.0591 0.1562 -0.2024
0.2500 -0.2738 0 -0.2663 -0.2500 0.8486 0 0.0949
12.3305 -0.2777 -0.7394 -0.1323 -0.1247 -0.0385 0.4240 -0.1999
0.4087 0.2580 -0.0518 0.5184 0.4223 0.2034 -0.1176 0.2729
0.1247 0.4444 0.1992 -0.2810 0.2159 0.2496 -0.2789 -0.2565
thanks

Best Answer

val=rand(8,8,4096); % Example
m=size(val,3);
a=arrayfun(@(x) circshift(val(:,:,x),-1),1:m,'un',0);
out=reshape(cell2mat(a),8,8,[]);
Related Question