www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgoptimrunner/private/pRunCell2VarCell.m

    function freevals = pRunCell2VarCell(obj, freevalcell)
%PRUNCELL2VARCELL Convert output data from cell-per-run to cell-per-variable.
%
%   FREEVALS = PRUNCELL2VARCELL(FREEVALCELL) converts a cell array of
%   output data that contains a single cell for each run into a cell array
%   of data that contains a single cell for each variable.

%   Copyright 2006 The MathWorks, Inc.


VarLen = obj.InputDataLengths(obj.FreeVariableIndices);
k = 1;
freevals = cell(1, length(VarLen));
for n = 1:length(freevals)
    tmp = cellfun(@(x) permute(x(:, k:k+VarLen(n)-1), [3 2 1]), ...
        freevalcell, 'UniformOutput', false);
    nSol = cellfun('size', tmp, 3);
    maxnSol = max(nSol);
    tmp = cellfun(@(x) cat(3, x, NaN*ones(1, VarLen(n), maxnSol - size(x, 3))), ...
        tmp, 'UniformOutput', false);
    freevals{n} = cat(1, tmp{:});
    k = k+VarLen(n);
end