classdef RCWA < handle
properties
Name
Polarization
LightSource
Period
ModeNumber
IndexProfileResolution
LayerNumber
Layers
FieldDetectorNumber
FieldDetectors
ComputingResults
Reflection
Transmission
end
methods
function mr=RCWA(varargin)
mr.Name='rcwa';
mr.ModeNumber=50;
mr.Period=800;
mr.ComputingResults=Results;
for icount=1:nargin
if ischar(varargin{icount})
switch lower(varargin{icount})
case {'nm','name'}
mr.Name=varargin{icount+1};
case {'period','lambda'}
mr.Period=varargin{icount+1};
case {'nmode','modenumber'}
mr.ModeNumber=varargin{icount+1};
otherwise
disp('Error: Unknown input.');
return;
end
end
end
mr.IndexProfileResolution=2^nextpow2(4*mr.ModeNumber+1);
mr.FieldDetectorNumber=0;
mr.LayerNumber=2;
mr.Layers=cell(mr.LayerNumber,1);
mr.Layers{1}=Layer('period',mr.Period,...
'indresol',mr.IndexProfileResolution);
mr.Layers{1}.SetThickness(0);
mr.Layers{1}.SetLayerThickness(0);
mr.Layers{2}=Layer('period',mr.Period,...
'indresol',mr.IndexProfileResolution);
mr.Layers{2}.SetThickness(0);
mr.Layers{2}.SetLayerThickness(0);
end
function SetModeNumber(mr,nmode)
mr.ModeNumber=nmode;
mr.IndexProfileResolution=2^nextpow2(4*mr.ModeNumber+1);
for icount=1:mr.LayerNumber
mr.Layers{icount}.SetIndexProfileResolution(...
mr.IndexProfileResolution);
end
end
function SetPeriod(mr,period)
mr.Period=period;
for icount=1:mr.LayerNumber
mr.Layers{icount}.SetPeriod(...
mr.Period);
end
end
function AddLayer(mr,varargin)
mr.Layers{mr.LayerNumber+1}=mr.Layers{mr.LayerNumber};
mr.Layers{mr.LayerNumber}=Layer('period',mr.Period,...
'IndexProfileResolution',mr.IndexProfileResolution,...
'lyt',0);
if nargin>1
for icount=1:2:nargin-1
if ischar(varargin{icount})
switch lower(varargin{icount})
case {'layerthick','layerthickness','lyt'}
mr.Layers{mr.LayerNumber}...
.SetLayerThickness(...
varargin{icount+1});
case {'nm','name'}
mr.Layers{mr.LayerNumber}.SetName(...
varargin{icount+1});
case {'index','profile',...
'indexprofile',...
'profileparameters',...
'indexprofileparameters'}
mr.Layers{mr.LayerNumber}...
.SetIndexProfile(...
varargin{icount+1});
otherwise
disp('Error: Unknown input.');
return;
end
end
end
end
mr.Layers{mr.LayerNumber}.Thickness...
=mr.Layers{mr.LayerNumber+1}.Thickness...
+mr.Layers{mr.LayerNumber}.LayerThickness;
mr.Layers{mr.LayerNumber+1}.Thickness...
=mr.Layers{mr.LayerNumber+1}.Thickness...
+mr.Layers{mr.LayerNumber}.LayerThickness;
mr.LayerNumber=mr.LayerNumber+1;
end
function SetLayer(mr,varargin)
if nargin==1
disp('Error: Please specify the layer by index or name.');
elseif mod(nargin,2)
disp('Error: Input argument number incorrect.');
else
if ischar(varargin{1})
for icount=1:mr.LayerNumber
if strcmpi(mr.Layers{icount}.Name,varargin{1})
for jcount=2:2:nargin-1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
switch lower(varargin{jcount})
case {'nm','name'}
mr.Layers{icount}.Name=varargin{jcount+1};
case {'layerthick','layerthickness','lyt'}
delthick=varargin{jcount+1}-mr.Layers{icount}.LayerThickness;
mr.Layers{icount}.LayerThickness=varargin{jcount+1};
for kcount=icount+1:length(mr.Layers)
mr.Layers{kcount}.Thickness...
=mr.Layers{kcount}.Thickness+delthick;
end
case {'index','profile',...
'indexprofile',...
'profileparameters',...
'indexprofileparameters'}
mr.Layers{icount}.SetIndexProfile(varargin{jcount+1});
otherwise
disp('Error: Unknown input.');
return;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
end
end
else
icount=varargin{1};
for jcount=2:2:nargin-1
switch lower(varargin{jcount})
case {'nm','name'}
mr.Layers{icount}.Name=varargin{jcount+1};
case {'layerthick','layerthickness','lyt'}
delthick=varargin{jcount+1}-...
mr.Layers{icount}.LayerThickness;
mr.Layers{icount}.LayerThickness=...
varargin{jcount+1};
for kcount=icount+1:length(mr.Layers)
mr.Layers{kcount}.Thickness...
=mr.Layers{kcount}.Thickness...
+delthick;
end
case {'index','profile',...
'indexprofile',...
'profileparameters',...
'indexprofileparameters'}
mr.Layers{icount}...
.SetIndexProfile(varargin{jcount+1});
otherwise
disp('Error: Unknown input.');
return;
end
end
end
end
end
function ApplyLightSource(mr,varargin)
mr.LightSource=Source;
mr.Polarization=mr.LightSource.Polarization;
mr.SetLightSource(varargin{:});
end
function SetLightSource(mr,varargin)
if nargin==1
return;
else
for icount=1:2:nargin-1
switch lower(varargin{icount})
case {'pol','polarization'}
mr.LightSource...
.SetPolarization(varargin{icount+1});
mr.Polarization=upper(varargin{icount+1});
case {'wv','wavelength'}
mr.LightSource...
.SetWavelength(varargin{icount+1});

IT狂飙
- 粉丝: 4849
- 资源: 2649
最新资源
- 基于kinect 的人体动作识别新版算法源码+说明.zip
- 基于MATLAB的车牌识别系统新版算法源码+说明.zip
- 基于lumen5.5开发的高性能高并发图片识别平台API源码+说明.zip
- 混合动力汽车动态规划算法理论油耗计算及模块化编程教学:基于MATLAB的快速计算程序与参数自定义配置技术 ,混合动力汽车动态规划算法:基于MATLAB的油耗计算程序与模块化教学平台 通过控制量与状态量
- 基于LSTM的中文情绪识别新版源码+数据.zip
- 基于MLKit实现二维码+条形码识别(实现微信效果样式).zip
- 基于mtcnn_facenet_tensorflow 实现人脸识别登录系统新版源码+说明.zip
- 基于MFCC语音特征提取和识别新版算法源码+说明.zip
- 基于HTML+JavaScript的瑞吉外卖系统设计源码及优化实践
- 基于MTCNN和MobileFaceNet实现的人脸识别算法源码(提供三种预测方式,满足各种需求).zip
- 基于Java语言的优优租车系统设计源码
- 基于opencv的java车牌检测识别库(支持linux、windows、mac、Android平台).zip
- MATLAB仿真:TMM计算光学薄膜与一维光子晶体透射谱、反射谱,可定制多种膜层与入射条件,MATLAB仿真TMM法:定制计算光学薄膜与一维光子晶体透反谱随入射角及波型变化,MATLAB仿真传输矩阵法
- 基于ocr主流算法gru_lstm+ctc+cnn架构进行不定长度验证码识别,达到不分割字符而识别验证码内容的效果.zip
- 基于STM32、ESP8266与OneNet的智能家电控制系统设计源码
- 基于opencv的图像识别基础库.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


