📄 get_new_points.m
字号:
function [vNew_beta, status] = get_new_points(vBeta_full, vErr_full, sm, tol, chunk)
xx = vBeta_full(1:end-1) + diff(vBeta_full)/2;
yy_lin = interp1(vBeta_full, 1./vErr_full, xx, 'linear');
yy_sp = interp1(vBeta_full, 1./vErr_full, xx, 'spline');
norm_diff = abs(yy_lin-yy_sp)/rms(interp1(vBeta_full, 1./vErr_full, linspace(min(xx), max(xx), 100), 'spline'));
if max(norm_diff) < 10^(-sm)
[dummy, mj] = local_maxima(1./vErr_full);
bExit = 1;
vNew_beta = [];
if isempty(mj)
return
end
for ind = 1:length(mj)
dist1 = vBeta_full(mj(ind)) - vBeta_full(mj(ind)-1);
dist2 = vBeta_full(mj(ind)+1) - vBeta_full(mj(ind));
bDone = (dist1 < tol) & (dist2 < tol);
if ~bDone
vNew_beta = [vNew_beta vBeta_full(mj(ind))-dist1/2 vBeta_full(mj(ind))+dist2/2];
end
%figure(1)
bExit = bExit & bDone;
end
if bExit == 1
status = 2; %done
else
status = 1; %in minimum phase
end
return
end
[dummy, s_ind] = sort(norm_diff);
vNew_beta = xx(s_ind);
status = 0; %normal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -