📄 calcbasis.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 + -