I am also a bit confused!
I understand what you are saying about avoiding angles. After posting this I realized I was trying to apply the shift (via 3dallineate) to the wrong file, and was able to use the output of align_epi_anat to move the "voxel" using the aff12.1D file and 3dallineate.
I will look into the mean transformation using cat_matvec.
I still have one question that's probably been asked many times: what's the difference between the 12 number rotation matrix with shift used by 3drotate and the 12 number affine transformation used by 3dallineate?
from the 3drotate help:
Quote
u11 u12 u13 v1
u21 u22 u23 v2
u31 u32 u33 u3
where each 'uij' and 'vi' is a number. The 3x3 matrix [uij] is the
orthogonal matrix of the rotation, and the 3-vector [vi] is the -ashift
vector of the translation.
and the 12 numbers described in the 3dallineate help:
Quote
The 3x3 spatial transformation matrix is calculated as [S][D]{U},
where [S] is the shear matrix,
[D] is the scaling matrix, and
{U} is the rotation (proper orthogonal) matrix.
Thes matrices are specified in DICOM-ordered (x=-R+L,y=-A+P,z=-I+S)
coordinates as:
{U} = [Rotate_y(param#6)] [Rotate_x(param#5)] [Rotate_z(param #4)]
(angles are in degrees)
[D] = diag( param#7 , param#8 , param#9 )
[ 1 0 0 ] [ 1 param#10 param#11 ]
[S] = [ param#10 1 0 ] OR [ 0 1 param#12 ]
[ param#11 param#12 1 ] [ 0 0 1 ]
The shift vector comprises parameters #1, #2, and #3.
These obviously describe different things, but because they are both sets of 12 I worry that I am using one thinking I have the other. If I restrict the 3dallineate to shift_rotate only, will parameters 7-12 be 0? I have not found that to be the case.