From 5753617baa76d6f129642217db174d5134122da7 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <Olivier.Sauter@epfl.ch>
Date: Sun, 27 Oct 2019 19:45:52 +0100
Subject: [PATCH] corrected time_out wit only one time point

---
 matlab/TCV/gdat_tcv.m | 30 ++++++++++++++++++++++++++----
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m
index fdeff219..65c4e01c 100644
--- a/matlab/TCV/gdat_tcv.m
+++ b/matlab/TCV/gdat_tcv.m
@@ -812,14 +812,36 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     gdat_data.t = beta.dim{1};
     gdat_data.data = beta.data;
     if isfield(gdat_data.gdat_params,'time_out') && ~isempty(gdat_data.gdat_params.time_out)
-      [gdat_data] = gdat2time_out(gdat_data,1);
+      % should already have all data at times time_out since called gdat_tcv above
     end
     ij=find(isfinite(ip.data));
-    ip_t = interp1(ip.dim{1}(ij),ip.data(ij),gdat_data.t);
+    % use interpos linear with option 21 to have cst extrapolation
+    if numel(ij) > 1
+      ip_t = interpos(21,ip.dim{1}(ij),ip.data(ij),gdat_data.t);
+    elseif numel(ij) == 1
+      ip_t = ip.data(ij);
+    else
+      warning('no valid data for ip, cannot fit')
+      return
+    end
     ij=find(isfinite(b0.data));
-    b0_t = interp1(b0.dim{1}(ij),b0.data(ij),gdat_data.t);
+    if numel(ij) > 1
+      b0_t = interpos(21,b0.dim{1}(ij),b0.data(ij),gdat_data.t);
+    elseif numel(ij) == 1
+      b0_t = b0.data(ij);
+    else
+      warning('no valid data for b0, cannot fit')
+      return
+    end
     ij=find(isfinite(a_minor.data));
-    a_minor_t = interp1(a_minor.dim{1}(ij),a_minor.data(ij),gdat_data.t);
+    if numel(ij) > 1
+      a_minor_t = interpos(21,a_minor.dim{1}(ij),a_minor.data(ij),gdat_data.t);
+    elseif numel(ij) == 1
+      a_minor_t = a_minor.data(ij);
+    else
+      warning('no valid data for a_minor, cannot fit')
+      return
+    end
     gdat_data.data = 100.*beta.data ./ abs(ip_t).*1.e6 .* abs(b0_t) .* a_minor_t;
     gdat_data.data_fullpath='100*beta/ip*1e6*b0*a_minor, each from gdat_tcv';
     gdat_data.units = '';
-- 
GitLab