0001 function [ meanValue ] = meanFieldInCells( cellArray, fieldName )
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 isAllField = false;
0022 if nargin == 1
0023 isAllField = true;
0024 end
0025 nCell = length(cellArray);
0026 if nCell == 0
0027 error('Input cell array is empty.');
0028 end
0029 if isAllField == true
0030 meanValue = [];
0031 allFieldName = fieldnames(cellArray{1});
0032 nField = length(allFieldName);
0033 for iField = 1:nField
0034 iFieldName = allFieldName{iField};
0035 iFieldValue = getfield(cellArray{1}, iFieldName);
0036 if ~isnumeric(iFieldValue)
0037 continue;
0038 end
0039 meanFieldValue = meanSpecificField(cellArray, iFieldName);
0040 meanValue = setfield(meanValue, iFieldName, meanFieldValue);
0041 end
0042 else
0043 meanValue = meanSpecificField(cellArray, fieldName);
0044 end
0045 end
0046
0047 function [ meanValue ] = meanSpecificField( cellArray, fieldName )
0048 nCell = length(cellArray);
0049 sumField = getfield(cellArray{1}, fieldName);
0050 if ~isnumeric(sumField)
0051 error([fieldName, ' is not numeric.']);
0052 end
0053 for iCell = 2:nCell
0054 if ~isfield(cellArray{iCell}, fieldName)
0055 error(['No ' fieldName 'field in ' int2str(iCell) 'th structure.']);
0056 end
0057 sumField = getfield(cellArray{iCell}, fieldName) + sumField;
0058 end
0059 meanValue = sumField / nCell;
0060 end