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

📄 readtmmfsargument.m

📁 用传输矩阵的方法来计算光子晶体带隙
💻 M
字号:
function [varmLayers varmFiles r m ...      \\Layers
    MaxOrder varMode WavlenRange ...        \\Control
    outputFile outputData outputPlot ...    \\Output
    ] = readTMMfSArgument(filename)
%% [varmLayers varmFiles r m MaxOrder varMode WavlenRange]=readTMMfSArgument(filename)
% Copyright yhwsoft2005.
% Created at 2005.5.11.
% Modifying list:

%% Read the parameters from the input file.
fid=fopen(filename,'r');

%% Omit the title of the input file.s
textscan(fid, '%s', 2, 'delimiter', '\n', 'commentStyle', '//');

%% varm
% varmLayers, varmFiles
textscan(fid, '%s', 1, 'delimiter', '\n', 'commentStyle', '//');
InputText = textscan(fid, '%f %s', 'commentStyle', '//');
varmLayers = double(InputText{1});
varmFiles = InputText{2};

%% layers
% r, m
textscan(fid, '%s', 1, 'delimiter', '=', 'commentStyle', '//');
InputText = textscan(fid, '%s', 1, 'delimiter', '\n', 'commentStyle', '//');
RadiusMode = cell2mat(InputText{1});
textscan(fid,'%s',1,'delimiter','\n', 'commentStyle', '//');
InputText = textscan(fid, '%f%f', 'commentStyle', '//');
r = double(InputText{1});
m = double(InputText{2});
if isequal(RadiusMode, 'inc')
    for j = 2:height_y(r)
        r(j) = r(j) + r(j-1);
    end
end
r = flipud(r);
m = flipud(m);

%% control
% MaxOrder, varMode, RangeBoundary
textscan(fid, '%s', 1, 'delimiter', '=', 'commentStyle', '//');
InputText = textscan(fid, '%d', 1, 'commentStyle', '//');
MaxOrder = double(InputText{1});

textscan(fid, '%s', 1, 'delimiter', '=', 'commentStyle', '//');
InputText = textscan(fid, '%s', 1, 'delimiter', '\n', 'commentStyle', '//');
varMode = cell2mat(InputText{1});

textscan(fid, '%s', 1, 'delimiter', '=', 'commentStyle', '//');
InputText = textscan(fid, '%f %f', 1, 'commentStyle', '//');
RangeBoundary = [InputText{1} InputText{2}];

textscan(fid, '%s', 1, 'delimiter', '=', 'commentStyle', '//');
InputText = textscan(fid, '%f', 1, 'commentStyle', '//');
SpaceNumber = double(InputText{1});

if varMode=='f'
    WavlenRange = 2*pi./linspace(RangeBoundary(2), ...
        RangeBoundary(1), SpaceNumber);
else
    WavlenRange = linspace(RangeBoundary(1), ...
        RangeBoundary(2), SpaceNumber);
end

%% output
% outputFile, outputData, outputPlot
textscan(fid, '%s', 1, 'delimiter', '=', 'commentStyle', '//');
InputText = textscan(fid, '%s', 1, 'delimiter' , '\n', 'commentStyle', '//');
outputFile = cell2mat(InputText{1});
textscan(fid, '%s', 1, 'delimiter', '=', 'commentStyle', '//');
InputText = textscan(fid, '%s%s%s', 1, 'delimiter', ',', 'commentStyle', '//');
outputData = [cell2mat(InputText{1});cell2mat(InputText{2});cell2mat(InputText{3})];
textscan(fid, '%s', 1, 'delimiter', '=', 'commentStyle', '//');
InputText = textscan(fid, '%s', 1, 'delimiter' , '\n', 'commentStyle', '//');
outputPlot = cell2mat(InputText{1});

fclose(fid);

%% Summary
% 计算范围的传递规定为波长,不管范围模式是波长或是频率。

⌨️ 快捷键说明

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