1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
function [weights] = tsgGetInterpolationWeights(lGrid, mX)
%
% [weights] = tsgGetInterpolationWeights(lGrid, mX)
%
% it gives the weights for interpolation (or approximation)
%
% INPUT:
%
% lGrid: a grid list created by tsgMakeXXX(...) command
%
% mX: an array of size [num_x, dimensions]
% specifies the points where the interpolant should be evaluated
% Note: do not confuse points here with the nodes of the grid
% here points are user specified points to evaluate the
% interpolant (or approximation)
%
% OUTPUT:
%
% weights: an array of size [num_x, number_of_points]
% the values associated with the interpolant at those points
%
% f(mX(i,:)) is approximated by weights(i,:)' * f(points)
% where points is obtained from the tsgGetPoints() function
%
[sFiles, sTasGrid] = tsgGetPaths();
[sFileG, sFileX, sFileV, sFileO, sFileW, sFileC] = tsgMakeFilenames(lGrid);
sCommand = [sTasGrid,' -getinterweights'];
sCommand = [sCommand, ' -gridfile ', sFileG];
tsgWriteMatrix(sFileX, mX);
sCommand = [sCommand, ' -xf ', sFileX];
lClean.sFileX = 1;
sCommand = [sCommand, ' -of ', sFileO];
lClean.sFileO = 1;
[status, cmdout] = system(sCommand);
if (max(size(strfind(cmdout, 'ERROR'))) ~= 0)
disp(cmdout);
error('The tasgrid execurable returned an error, see above');
return;
else
if (~isempty(cmdout))
fprintf(1,['Warning: Command had non-empty output:\n']);
disp(cmdout);
end
[weights] = tsgReadMatrix(sFileO);
end
tsgCleanTempFiles(lGrid, lClean);
end
|