⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 get_new_points.m

📁 利用电磁场的源激发方法来计算光子晶体波导例如光子晶体光纤
💻 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 + -