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

📄 in_shape.m

📁 利用电磁场的源激发方法来计算光子晶体波导例如光子晶体光纤
💻 M
字号:
% assumes center of figure is inside
function out = in_shape(mX, mY, cx, cy, vein)
[rows,cols] = size(mX);
x0 = mX(1,1);
y0 = mY(1,1);
% deal with vector mX or mY
dx = 0;
dy = 0;
if size(mX,2) ~= 1
    dx = abs(mX(1,2)-x0); 
end
if size(mY,1) ~= 1
    dy = abs(mY(2,1)-y0); 
end
if dx == 0
    dx = dy;
end
if dy == 0
    dy = dx;
end
N = 2500;
cs = vein.cs;
s = linspace(cs.breaks(1), cs.breaks(end), N);
mF = ppval(cs, s);
shrink = 1-1/max(size(mX));
vSx = shrink*mF(1,:) + cx;
vSy = shrink*mF(2,:) + cy;

x_ind = round((vSx-x0)/dx)+1;
y_ind = round((vSy-y0)/dy)+1;
iOk = find( (x_ind <= cols) & (x_ind >= 1) );
x_ind = x_ind(iOk);
y_ind = y_ind(iOk);
iOk = find( (y_ind <= rows) & (y_ind >= 1) );
x_ind = x_ind(iOk);
y_ind = y_ind(iOk);
if isempty(x_ind)
    out = logical(zeros(rows, cols));
    return
end
cx_ind = round((cx-x0)/dx)+1;
cx_ind = min(cols, max(cx_ind, 1));
cy_ind = round((cy-y0)/dy)+1;
cy_ind = min(rows, max(cy_ind, 1));
out = zeros([rows,cols]);
out = sparse(y_ind, x_ind, 1, rows, cols);
out = logical(full(out>0));
out = imfill(out, round([cy_ind cx_ind]), 4);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -