0001 function y=nt_mmat(x,m)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 if nargin<2; error('!'); end
0012
0013 if iscell(x)
0014 for iCell=1:length(x)
0015 y{iCell}=nt_mmat(x{iCell},m);
0016 end
0017 return;
0018 end
0019
0020 if ndims(x)>3
0021
0022 sz=size(x);
0023 x=reshape(x,[sz(1),sz(2),prod(sz(3:end))]);
0024 x=nt_mmat(x,m);
0025 x=reshape(x,[size(x,1),sz(2),sz(3:end)]);
0026
0027 else
0028
0029 if ndims(m)==2;
0030
0031 y=nt_mmat0(x,m);
0032
0033 else
0034
0035
0036
0037 [nRows,nCols,nLags]=size(m);
0038 [nSamples,nChans,nTrials]=size(x);
0039 if nChans~=nRows;
0040 error('ncols(x) ~= nrows(m)');
0041 end
0042
0043
0044 y=zeros(nSamples+nLags-1,nCols,nTrials);
0045 for iLag=1:nLags
0046 y(iLag:iLag+nSamples-1,:,:) = y(iLag:iLag+nSamples-1,:,:) + nt_mmat0(x,m(:,:,iLag));
0047 end
0048
0049 end
0050 end
0051
0052 function x=nt_mmat0(x,m)
0053 x=nt_fold(nt_unfold(x)*m,size(x,1));