%--brain mask with the brain tissue mask_name = 'C:UsersAdministratorDesktopworkspacepreprocessedmaskswithin_brain_mask.nii'; M = load_untouch_nii( mask_name ); % load mask NIFTI mask = double(M.img>0); % get 3d v %--brain functional 4d data data_4d = 'C:UsersAdministratorDesktopworkspacepreprocessed4dfunc_3d.nii'; % data_4d = 'C:UsersAdministratorDesktopphycaa_workspacephycaa_plus_2104_03_27\_PHYCAA_step1+2.nii'; V = load_untouch_nii( data_4d ); %--transform 4d array to 2d array, using brain_mask within_brain_voxels = nifti_to_mat(V,M); nt_matrix = within_brain_voxels; [V_c S_c temp] = svd( nt_matrix' * nt_matrix ); % PC-space representation Q_c = V_c * sqrt( S_c ); offSet=1; pcs=4; % estimate temporal autocorrelation maximized "sources" Q1 = Q_c( 1:(end-offSet) , 1:pcs ); % un-offset Q2 = Q_c( (offSet+1):end , 1:pcs ); % offsetted timeseries % canonical correlations on time-lagged data [A,B,R,U,V,stats] = canoncorr(Q1,Q2); % getting stable "average" autocorrelated timeseries a=[U(1,:)]; b=[U(2:end,:) + V(1:end-1,:)./2]; c=[V(end,:)]; tset = [a;b;c];