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