From ea84906b66564f61a08d0dc325bfd37ca843dbdc Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Tue, 17 Sep 2024 16:03:56 +0200
Subject: [PATCH] add interpos_nan to avoid NaNs automatically if not
 pre-checked

---
 matlab/TCV/gdat_tcv.m | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m
index f528917d..60fba663 100644
--- a/matlab/TCV/gdat_tcv.m
+++ b/matlab/TCV/gdat_tcv.m
@@ -2567,8 +2567,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       gdat_data.dimunits{1} = 's';
       gdat_data.units = 'W';
       tension = -1e5;
-      vloop_smooth=interpos(-63,vloop.t,vloop.data,gdat_data.ohm.t,tension);
-      ip_t = interpos(21,ip.t,ip.data,gdat_data.ohm.t);
+      vloop_smooth=interpos_nan(-63,vloop.t,vloop.data,gdat_data.ohm.t,tension);
+      ip_t = interpos_nan(21,ip.t,ip.data,gdat_data.ohm.t);
       gdat_data.ohm.data = -vloop_smooth.*ip_t; % TCV has wrong sign for Vloop
       gdat_data.ohm.raw_data = -vloop.data.*ip_t;
       gdat_data.ohm.data_fullpath = 'from vloop*Ip, smoothed vloop in data, unsmoothed in raw_data';
@@ -2604,7 +2604,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
         gdat_data.ec.label='P_{EC}';
         gdat_data.ec.help = tracetdi.help;
         % add to main with linear interpolation and 0 for extrapolated values
-        gdat_data.data(:,end+1) = interpos(-21,gdat_data.ec.t,gdat_data.ec.data(:,end),gdat_data.t);
+        gdat_data.data(:,end+1) = interpos_nan(-21,gdat_data.ec.t,gdat_data.ec.data(:,end),gdat_data.t);
         gdat_data.x(end+1) = size(gdat_data.data,2);
         gdat_data.label{end+1}=gdat_data.ec.label;
       end
@@ -2673,7 +2673,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
         gdat_data.rad.label='P_{RAD}';
         gdat_data.rad.help = tracetdi.help;
         % add to main with linear interpolation and 0 for extrapolated values
-        gdat_data.data(:,end+1) = interpos(-21,gdat_data.rad.t,gdat_data.rad.data(:,end),gdat_data.t);
+        gdat_data.data(:,end+1) = interpos_nan(-21,gdat_data.rad.t,gdat_data.rad.data(:,end),gdat_data.t);
         index_rad = size(gdat_data.data,2);
         gdat_data.x(end+1) = size(gdat_data.data,2);
         gdat_data.label{end+1}=gdat_data.rad.label;
@@ -3108,7 +3108,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       psi_axis=gdat_tcv(shot,params_eff);
       params_eff.data_request='b0';
       b0=gdat_tcv(shot,params_eff);
-      b0tpsi = interpos(21,b0.t,b0.data,psi_axis.t); %q_rho on same time base as psi_axis
+      b0tpsi = interpos_nan(21,b0.t,b0.data,psi_axis.t); %q_rho on same time base as psi_axis
       if isempty(psi_axis.data) || isempty(psi_axis.dim) || isempty(q_rho.data) || isempty(q_rho.dim)
         if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end
         return
@@ -3495,7 +3495,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
         end
         % compute interpolation with tension provided
         for i=1:size(sxr.data,2)
-          gdat_data.data(i,:) = interpos(sxr.time,sxr.data(:,i),gdat_data.t,gdat_data.gdat_params.fit_tension);
+          gdat_data.data(i,:) = interpos_nan(sxr.time,sxr.data(:,i),gdat_data.t,gdat_data.gdat_params.fit_tension);
         end
       end
       gdat_data.r_x = sxr.geometry.xchord(gdat_data.x,:);
@@ -3560,7 +3560,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
         % invert index of time and channel (rho)
         gdat_data.data = mpx.(gdat_data.gdat_params.camera(1:3)).signal.data';
         gdat_data.t = mpx.(gdat_data.gdat_params.camera(1:3)).signal.dim{1};
-        gdat_data.dim{1} = interpos(21,mpx.top.rho.time,mpx.top.rho.rhopsi,gdat_data.t)';
+        gdat_data.dim{1} = interpos_nan(21,mpx.top.rho.time,mpx.top.rho.rhopsi,gdat_data.t)';
         gdat_data.dim{2} = mpx.(gdat_data.gdat_params.camera(1:3)).signal.dim{1};
         gdat_data.x = gdat_data.dim{1};
         gdat_data.(gdat_data.gdat_params.camera).data = gdat_data.data;
@@ -3571,14 +3571,14 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       else
         gdat_data.data = mpx.signal.data';
         gdat_data.t = mpx.signal.dim{1};
-        gdat_data.dim{1} = interpos(21,mpx.top.rho.time,mpx.top.rho.rhopsi,gdat_data.t);
+        gdat_data.dim{1} = interpos_nan(21,mpx.top.rho.time,mpx.top.rho.rhopsi,gdat_data.t);
         gdat_data.dim{2} = mpx.(gdat_data.gdat_params.camera(1:3)).signal.dim{1};
         %
         gdat_data.top.data = mpx.top.signal.data';
         gdat_data.top.x = gdat_data.dim{1};
         gdat_data.top.channel = mpx.top.signal.dim{2};
         gdat_data.bottom.data = mpx.bot.signal.data;
-        gdat_data.bottom.x = interpos(21,mpx.bot.rho.time,mpx.bot.rho.rhopsi,gdat_data.t);
+        gdat_data.bottom.x = interpos_nan(21,mpx.bot.rho.time,mpx.bot.rho.rhopsi,gdat_data.t);
         gdat_data.bottom.channel = mpx.bottom.signal.dim{2};
         gdat_data.(gdat_data.gdat_params.camera).channel = mpx.(gdat_data.gdat_params.camera(1:3)).signal.dim{2};
         gdat_data.data_fullpath = ['MPX for ' gdat_data.gdat_params.camera ' camera in .data, "rho" in .x between [-1,1]' ...
@@ -3849,7 +3849,7 @@ end
 
 if ~isempty(tracefirrat.data) && ~ischar(tracefirrat.data) && any(isfinite(tracefirrat.data)) ...
       && ~isempty(tracefirrat.dim) && ~isempty(tracefirrat.dim{1})
-  firthomratio = interpos(21,tracefirrat.dim{1},tracefirrat.data,timebase);
+  firthomratio = interpos_nan(21,tracefirrat.dim{1},tracefirrat.data,timebase);
 end
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4062,7 +4062,7 @@ switch numel(zshifteff)
   case 1
     zshifteff=zshifteff * ones(size(t_th));
   case numel(t_psi)
-    zshifteff=interpos(21,t_psi,zshifteff,t_th);
+    zshifteff=interpos_nan(21,t_psi,zshifteff,t_th);
   case numel(t_th)
     % ok
   otherwise
-- 
GitLab