diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m index fdeff219e61bc49e51ddfa76a63dfa7227415d71..65c4e01c93d26e85cad9b4494c144ba42849f042 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 = '';