⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calcbasis.m

📁 线性时变系统控制器设计的工具包
💻 M
字号:
function [fparm,gparm,gradf,gradg] = calcbasis(parmvec,basisfunc)% function [fparm,gparm,gradf,gradg] = calcbasis(parmvec,'basisfunc')%%   Evaluates basis functions and gradients at desired parameter points.  % Inputs:  parmvec	varying matrix of parameter values% 	   'basisfunc'	string containing the name of a function%			evaluating the basis functions and gradients.%% Outputs: fparm	varying matrix of values for f%	   gparm	varying matrix of values for g%	   gradf	varying matrix of values for df/drho%	   gradg	varying matrix of values for dg/drho%% basisfunc.m should have the syntax %	[fdef,gdef,gfdef,ggdef] = func(rho)% as shown below:%% Consider R-dimensional parameters and N basis functions:% fdef = [f1(parm);f2(parm);...;fN(parm)];% gfdef = [df1/dparm1 df1/dparm2 ... df1/dparmR;%          df2/dparm1 df2/dparm2 ... df2/dparmR;%              .         .               . %              .         .               . %              .         .               . %          dfN/dparm1 dfN/dparm2 ... dfN/dparmR];% and similarly for gdef, ggdef.%% For example:% fdef = [1; parmi(3); parmi(3)^2; parmi(3)^3];% gdef = fdef;% gfdef = [0 0 0; 0 0 1; 0 0 2*parmi(3); 0 0 3*parmi(3)^2];% ggdef = gfdef;if nargin == 0 disp('usage: [fparm,gparm,gradf,gradg] = calcbasis(parmvec,''basisfunc'')'); returnend[mtype,row,col,npts] = minfo(parmvec);if mtype == 'vary' tmp = xtracti(parmvec,1,1); if min(size(tmp)) ~= 1  error('Parameter must be a vector'); endelseif mtype == 'cons' if min(size(parmvec)) ~= 1  error('Parameter must be a vector'); end parmvec = vpck(parmvec,1); npts = 1;else error('Parameter data must constant or varying vector');endfparm = [];gparm = [];gradf = [];gradg = [];for i=1:npts  parmi = xtracti(parmvec,i,1);  % Call the evaulating function  eval(['[fdef,gdef,gfdef,ggdef] = ' basisfunc '(parmi);']);  fparm = [fparm;fdef];  gparm = [gparm;gdef];  gradf = [gradf;gfdef];  gradg = [gradg;ggdef];endiv = getiv(parmvec);fparm = vpck(fparm,iv);gparm = vpck(gparm,iv);gradf = vpck(gradf,iv);gradg = vpck(gradg,iv);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -