www.gusucode.com > mbcexpr 工具箱 matlab 源码程序 > mbcexpr/@cgsymvalue/setvalue.m

    function [VariablePtr, OK, msg] = setvalue(obj, val, nulptr)
%SETVALUE Set the value of a symbolic value object
%
%  OBJ = SETVALUE(OBJ, NEWVAL)

%  Copyright 2000-2012 The MathWorks, Inc. and Ford Global Technologies, Inc.


OK = 1;
msg = '';

if any(isnull(obj.EquationPointers))
    % Just store  value in parent
    obj.cgvalue = setvalue(obj.cgvalue, val);
else
    InputVals = cell(size(obj.EquationInputs));
    InputArgs = argnames(obj.InverseObject);
    myname = getname(obj);
    for n = 1:length(InputVals)
        if strcmp(InputArgs{n}, myname)
            InputVals{n} = val;
        else
            ptr = obj.EquationPointers(strcmp(InputArgs{n}, obj.EquationInputs));
            InputVals{n} = getvalue(ptr.info);
            if length(InputVals{n})>1
                InputVals{n} = getnomvalue(ptr.info);
            end
        end
    end
    VariableVal = pr_evalinline(obj.InverseObject, InputVals);
    VariablePtr = obj.EquationPointers(obj.EquationVariableIndex);
    VariablePtr.info  = setvalue(VariablePtr.info, VariableVal);
end

if nargin==2
    VariablePtr = obj;
end