I got sick of typing: a = nanmean(nanmean(nanmean(nanmean(b,dims)))) this is a lazy way for doing the mean over all dimensions of the input matrix b (if dims is not specified). or, specify the dimensions to average. if dims is just a number, it averages the first dims dimensions (e.g. dims=3 averages the first 3 dimensions). if dims is a matrix, it averages over those dimensions specified (e.g. dims=[1 2 4] skips 3rd dimension).
0001 function a = nanmeanND(b,dims); 0002 0003 % I got sick of typing: 0004 % 0005 % a = nanmean(nanmean(nanmean(nanmean(b,dims)))) 0006 % 0007 % this is a lazy way for doing the mean over all 0008 % dimensions of the input matrix b (if dims is not 0009 % specified). 0010 % 0011 % or, specify the dimensions to average. 0012 % 0013 % if dims is just a number, it averages the 0014 % first dims dimensions (e.g. dims=3 averages 0015 % the first 3 dimensions). 0016 % 0017 % if dims is a matrix, it averages over those 0018 % dimensions specified (e.g. dims=[1 2 4] skips 0019 % 3rd dimension). 0020 0021 if nargin < 2 0022 dims=ndims(b); 0023 end 0024 0025 if size(dims,2)==1 0026 dims=1:dims; 0027 end 0028 0029 dims 0030 0031 thingToEval='a = '; 0032 0033 for i=1:size(dims,2) 0034 thingToEval = [thingToEval,'nanmean(']; 0035 end 0036 0037 thingToEval = [thingToEval,'b']; 0038 0039 for i=1:size(dims,2) 0040 thingToEval = [thingToEval,',',num2str(dims(i)),')']; 0041 end 0042 0043 thingToEval 0044 eval([thingToEval,';']); 0045 0046