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

📄 calcbasis.m

📁 我自己编写的飞行器控制系统设计代码
💻 M
字号:
function [fparm,gparm,gradf,gradg]=calcbasis(parmvec)

%Evaluate the basis functiona and gradient at desired parameter point
%Input:
%Parmvec    Varying matrix of varying parameter vectors, for example 
%           Parmvec=[[parm1_1 parm2_1..parmN_1];....;[parm1_i
%           parm2_i..parmN_i]], i=Number of grid_pts, N=number of parameters

%basisfunc  the string name of the function that evaluate the basis
%           function  f(parm)_i*X_i / g(parm)_i*Y_i (i==R), for example:
%           [fdef,gdef,gfdef,ggdef]=basisfunc(parmvec);
%           fparm=[f1(parm); f2(parm);...;fn(parm)]
%           gfparm=[df1/d(parm_1) df1/d(parm_2)... df1/d(parm_i); 
%                   df2/d(parm_1) df2/d(parm_2) ... df2/d(parm_i);
%                                   ...
%                  dfR/d(parm_1) dfR/d(parm_2) ... dfR/d(parm_i);]
%           R=number of basis functions
%
% 
if nargin==0
    disp('usage:[fparm,gparm,gfparm,ggparm]=calcbasis(parmvec, ''basisfunc'')');
    return;
end

[mtyps,mrow,mcol,npts]=minfo(parmvec);
if mtyps=='vary'
    temp=xtracti(parmvec,1,1);
  if min(size(temp))~=1
    error('parameter must be vector');
  end
elseif mtyps=='cons'
    if min(size(parmvec))~=1
        error('parameter must be vector');
    end
    parmvec=vpck(parmvec,1);
    npts=1
else
    error('parameter data must be constant or varying matrix');
end
    
fparm=[];
gparm=[];
gradf=[];
gradg=[];

for i=1:npts
   parm=xtracti(parmvec,i,1);
   [fdef,gdef,gfdef,ggdef]=basisfunc(parm)
 
   fparm=[fparm;fdef];
   gparm=[gparm;gdef];
   gradf=[gradf;gfdef];
   gradg=[gradg;ggdef];
   
end
iv=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 + -