Open dinalt2006 opened 4 months ago
In FOMCON, you would either use the fid
function, or more appropriate to your use case, the pfid
function which allows for parameteric identification of linear models. From its docstring:
% EXPR is a symbolic expression with the FOTF model structure, e.g.
%
% EXPR = 'p_1/(1+T*s^{q_1}) exp(-q_2*s)'; % Defines a FFOPDT model
% with T (time constant)
% known in advance
The above can be used to identify a model of type
$$G_i = \frac{p_1}{1+T\cdot s^{q_1})} \cdot \text{e}^{-q_2 \cdot s}$$
where $\theta = [p_1, q_1, q_2]$ are the estimated parameters, whereas $T$ is considered known (and must be assigned in the params
structure).
Nice! Thank you so much!
0.78288s^{1.3996}+1.5687s^{0.045358}
Be so kind as to formulate the correct pfid or fid function call for these conditions. When I run this code EXPR = '(1/(1+p_1*s^{q_1}))'; % Defines a FFOPDT model [IDPARAMS,G] = pfid(operator, EXPR); i get a lot of errors: Incorrect number or types of inputs or outputs for function 'fix'.
Error in ^ (line 4) if n == fix(n)
Error in pfid>fracparidfun (line 300) G = eval(expr);
Error in pfid>@(x)idcost(x,expr,simParam,sizes,indP,indQ,iddata,opt) (line 226) lsqnonlin(@(x) idcost(x, expr, simParam, sizes, indP, indQ, iddata, opt), ...
Error in lsqnonlin (line 218) initVals.F = feval(funfcn{3},xCurrent,varargin{:});
Error in pfid (line 226) lsqnonlin(@(x) idcost(x, expr, simParam, sizes, indP, indQ, iddata, opt), ...
Error in [ ^ ](matlab:matlab.internal.language.introspective.errorDocCallback('fotf/mpower', 'C:\Users\dinal\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\FOMCON Toolbox for MATLAB\@fotf\mpower.m', 4)) ([line 4](matlab: opentoline('C:\Users\dinal\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\FOMCON Toolbox for MATLAB\@fotf\mpower.m',4,0))) if n == fix(n)
Error in [pfid>fracparidfun](matlab:matlab.internal.language.introspective.errorDocCallback('pfid>fracparidfun', 'C:\Users\dinal\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\FOMCON Toolbox for MATLAB\id\pfid.m', 300)) ([line 300](matlab: opentoline('C:\Users\dinal\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\FOMCON Toolbox for MATLAB\id\pfid.m',300,0))) G = eval(expr);
Error in [pfid>@(x)idcost(x,expr,simParam,sizes,indP,indQ,iddata,opt)](matlab:matlab.internal.language.introspective.errorDocCallback('pfid>@(x)idcost(x,expr,simParam,sizes,indP,indQ,iddata,opt)', 'C:\Users\dinal\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\FOMCON Toolbox for MATLAB\id\pfid.m', 226)) ([line 226](matlab: opentoline('C:\Users\dinal\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\FOMCON Toolbox for MATLAB\id\pfid.m',226,0))) lsqnonlin(@(x) idcost(x, expr, simParam, sizes, indP, indQ, iddata, opt), ...
Error in [lsqnonlin](matlab:matlab.internal.language.introspective.errorDocCallback('lsqnonlin', 'D:\Programs\MATLAB2022B\toolbox\shared\optimlib\lsqnonlin.m', 218)) ([line 218](matlab: opentoline('D:\Programs\MATLAB2022B\toolbox\shared\optimlib\lsqnonlin.m',218,0))) initVals.F = feval(funfcn{3},xCurrent,varargin{:});
Error in [pfid](matlab:matlab.internal.language.introspective.errorDocCallback('pfid', 'C:\Users\dinal\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\FOMCON Toolbox for MATLAB\id\pfid.m', 226)) ([line 226](matlab: opentoline('C:\Users\dinal\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\FOMCON Toolbox for MATLAB\id\pfid.m',226,0))) lsqnonlin(@(x) idcost(x, expr, simParam, sizes, indP, indQ, iddata, opt), ...
Is there an analogue of function PROCEST in FOMCON?