comments
[wrf-fire-matlab.git] / vis / ts_at_test.m
blob16922b0524a5f1ac837c96b9846e5b47d3ac716f
1 function ts_at_test
2      % TS_AT_TEST tests the TS_AT interpolation function.
3     %
4     % This function generates a synthetic dataset of variable values defined
5     % on a grid with random perturbations of coordinates 
6     % and verifies the TS_AT function by checking if the interpolation 
7     % at random points preserves linear functions
8     %
9     % No arguments.
10     %
11     % No return value.
12     %
13     % Example:
14     %   ts_at_test;  
17     % Generate xlon and xlat as uniform with random perturbations
18     xlon = repmat(linspace(-180, 180, 100), [100, 1]) + rand(100) - 0.5;
19     xlat = repmat(linspace(-90, 90, 100)', [1, 100]) + rand(100, 1) - 0.5;
20     
21     % Define v as a linear function a*xlon + b*xlat
22     a = 2;
23     b = 3;
24     v = bsxfun(@plus, bsxfun(@times, a, xlon), bsxfun(@times, b, xlat));
25     v = repmat(v, [1, 1, 10]); % Repeat the same pattern for 10 time steps
26     
27     % Verify that ts_at returns a*lon + b*lat for several random (lon, lat)
28     for i = 1:5
29         lon = rand()*360 - 180; % Random longitude between -180 and 180
30         lat = rand()*180 - 90;  % Random latitude between -90 and 90
31         ts = ts_at(lon, lat, xlon, xlat, v);
32         expected_ts = a*lon + b*lat;
33         assert(all(abs(ts - expected_ts) < 1e-5), 'Test failed!');
34     end
35     
36     disp('All tests passed.');
37 end