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});
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的RCWA计算方案的MATLAB代码+使用说明文档
共15个文件
m:14个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 159 浏览量
2024-05-22
17:17:38
上传
评论
收藏 15KB RAR 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的RCWA计算方案的MATLAB代码,供学习参考电磁波方程的求解,纯矢量方式的代码+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的RCWA计算方案的MATLAB代码,供学习参考电磁波方程的求解,纯矢量方式的代码适用于有一定标量衍射理论基础的同学+使用说明文档.rar (15个子文件)
ricwaa 1.0.2
reflectionte.m 205B
rcwatm.m 4KB
hpc_cavity.m 2KB
Layer.m 5KB
diffefftm.m 252B
Detector.m 3KB
rcwate.m 4KB
RCWA.m 20KB
fldcmp.m 6KB
Results.m 1KB
epsfft.m 954B
reflectiontm.m 225B
Source.m 1KB
diffeffte.m 236B
使用说明文档.md 13KB
共 15 条
- 1
资源评论
IT狂飙
- 粉丝: 4825
- 资源: 2653
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- formatted-task010-mctaco-answer-generation-event-ordering.json
- springboot农用车4S店管理系统答辩PPT
- Spring 框架之WebTestClient.pdf
- formatted-task009-mctaco-question-generation-event-ordering.json
- formatted-task008-mctaco-wrong-answer-generation-transient-stationary.json
- formatted-task007-mctaco-answer-generation-transient-stationary
- formatted-task006-mctaco-question-generation-transient-stationary
- Natural-Instructions mctaco-wrong-answer-generation-event-duration 指令微调数据
- 中国汽车金融报告 汽车金融:市场分析与发展趋势
- mmexport1732758164810.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功