Skip to content
Snippets Groups Projects

Check cxrs

Merged Olivier Sauter requested to merge check_cxrs into master
1 file
+ 8
8
Compare changes
  • Side-by-side
  • Inline
+ 0
87
function profiles=CXRS_fit_profies(V,Times,param_prof,param_plot);
% Fit profiles with "interpos" function
% Call profiles=CXRS_fit_profies(V,Times,param_prof,param_plot);
%sel=find((V.t+V.dt/2>=Times(1))&(V.t-V.dt/2<=Times(2)));
sel=find((V.t>=Times(1))&(V.t<=Times(2)));
x = V.x(sel); dx = V.dx(sel); y = V.y(sel); dy = V.dy(sel); t = V.t(sel); dt = V.dt(sel); sys = V.sys(sel);
% shift of duplicated points in rho
Xb=x;
for ip=1:length(Xb)
sss=1:length(Xb); sss=find(sss~=ip);
iff=(find(Xb(ip)==Xb(sss)));
if length(iff)>0, Xb(iff(1))=Xb(iff(1))+1.e-8; end
end
% sort points in rho
[x,iii] = sort(Xb);
if length(iii)==0 % No data
profiles.t_lim=Times;
profiles.x_prof=[];
%profiles.x_prof= NaN(1,101)
profiles.y_prof=[];
profiles.dy_prof=[];
profiles.use.x=[]; profiles.use.dx=[]; profiles.use.y=[]; profiles.use.dy=[]; profiles.use.t=[]; profiles.use.dt=[];profiles.use.sys=[];
profiles.param_prof = param_prof;
profiles.param_plot = param_plot;
if param_plot.ON,
if param_plot.clear, clf; end
hve(1)=plot(0,NaN,'ok'); hold on
set(hve(1),'Color',param_plot.color,'LineStyle','none','LineWidth',param_plot.lnwidth,'Marker',param_plot.typemk,'MarkerSize',param_plot.sizemk);
profiles.plot_handle=hve(1);
end
return;
end
dx=dx(iii); y=y(iii); dy=dy(iii); t=t(iii); dt=dt(iii);sys=sys(iii);
if isempty(param_prof.xout), param_prof.xout=linspace(min(x)*0.98,max(x)*1.02,101); end
if ((min(x)-min(param_prof.xout))>0.45),
param_prof.xout=linspace(min(x)*0.85,max(param_prof.xout),length(param_prof.xout));
%disp(sprintf('Redefine rho for %4.4f-%4.4fsec',Times));
end
x_prof = param_prof.xout;
XXmax=max([max(x)+0.01 1.3]);
if length(iii)>=10,
%y_prof = interpos(param_prof.kopt,x,y,x_prof,param_prof.taus,param_prof.nbc,param_prof.ybc,abs(dy)+param_prof.err_min);
%disp('...before')
y_prof = interpos(param_prof.kopt,[0; x; XXmax],[y(1); y; 0],x_prof,param_prof.taus,param_prof.nbc,param_prof.ybc,[abs(y(1))+abs(dy(1))*10.; abs(dy); 0]+param_prof.err_min );
%disp('...after')
else
y_prof = x_prof'*NaN;
end
y_prof=y_prof';
for ip=1:length(x_prof)
W=1./dy.*1./(1.+((x-x_prof(ip))./dx).^2); W=W/sum(W);
Wn=sum(1./(1.+((x-x_prof(ip))./dx).^2));
dy_prof(ip) = sqrt(sum(W.*dy.^2))./sqrt(Wn);
end
profiles.t_lim=[min(t-dt/2.) max(t+dt/2.)];
profiles.x_prof=x_prof;
profiles.y_prof=y_prof;
profiles.dy_prof=dy_prof;
profiles.use.x=x; profiles.use.dx=dx; profiles.use.y=y; profiles.use.dy=dy; profiles.use.t=t; profiles.use.dt=dt;profiles.use.sys=sys;
profiles.param_prof = param_prof;
profiles.param_plot = param_plot;
if param_plot.ON,
if param_plot.clear, clf; end
% matlab version
[v, ~] = version;
mat_ver = str2double(v(1:3));
hve=CXRS_errorbar(mat_ver, x,y,dx,dy); set(hve,'Color',param_plot.color); C=get(hve(1),'Color'); hold on
set(hve(1),'Color',max(C-0.2,[0 0 0]),'LineStyle','none','LineWidth',1.0,'Marker',param_plot.typemk,'MarkerSize',param_plot.sizemk);
set(hve(2),'Color',C); set(hve(1),'MarkerFaceColor',min(C+0.5,[1 1 1]),'MarkerEdgeColor',max(C-0.3,[0 0 0]));
if param_plot.clear, grid on; if ~isnan(max(x_prof)), set(gca,'Xlim',[min(x_prof) max(x_prof)]); else, set(gca,'Xlim',[0 1.1]); end, end
hh=plot(x_prof,y_prof,'-r');
set(hh,'Color',max(C-0.1,[0 0 0]),'LineStyle','-','LineWidth',param_plot.lnwidth);
if (size(y_prof,2)~=size(dy_prof,2)), y_prof=y_prof'; end
% whos x_prof y_prof dy_prof
hh=plot(x_prof,y_prof+dy_prof,'-r');
set(hh,'Color',min(C+0.2,[1 1 1]),'LineStyle','--','LineWidth',1.);
hh=plot(x_prof,y_prof-dy_prof,'-r');
set(hh,'Color',min(C+0.2,[1 1 1]),'LineStyle','--','LineWidth',1.);
profiles.plot_handle=hve(1);
end
return
Loading