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

📄 b04060834_c.m

📁 平行平面谐振腔自再现模分析
💻 M
字号:
function varargout = B04060834_C(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @B04060834_C_OpeningFcn, ...
                   'gui_OutputFcn',  @B04060834_C_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
function B04060834_C_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;


guidata(hObject, handles);




function varargout = B04060834_C_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;



function editForCrossTimesTag_Callback(hObject, eventdata, handles)

function editForCrossTimesTag_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function editForWaveLengthTag_Callback(hObject, eventdata, handles)

function editForWaveLengthTag_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function B04060834_C = f_one(u, waveLength, L, a, x1)
data_x2 = a/100;  % 积分的梯度变化量
x2 = -a : data_x2 : a;
n_x2 = length(x2);  % 积分的样本点数

double sum_x2;   % 该点的值
sum_x2 = 0;
double data_y; 

for k = 1 : n_x2
    y = exp(-i*2*pi*((x1-x2(k))^2)/(2*L*waveLength)).*u(k);
    data_y = y * data_x2 * sqrt(i/waveLength./L*exp(-i*2*pi*L/waveLength));
    sum_x2 = sum_x2 + data_y;  % 累加结果
end

B04060834_C = vpa(sum_x2, 3);  % 输出
 
function pushbuttonToDrawA_Callback(hObject, eventdata, handles)

double waveLength;
% 获得输入的参数

crossTimes = str2num(get(handles.editForCrossTimesTag,'String'));
waveLength = str2num(get(handles.editForWaveLengthTag,'String'));

waveLength = waveLength*10^(-9); %nm
double a;
double L;

% a, L
a = 25*waveLength/2;
L = 100*waveLength;

double x1;
x1 = -a : a/100 : a;
n_x1 = length(x1);

Ua = ones(n_x1);  % 定义存储矩阵:保存振幅
Up = zeros(n_x1);  % 定义存储矩阵:保存相位

u = ones(n_x1);   % 定义存储矩阵:保存复数表达式

% 计算渡越
nCount = 1;
for FirstDim = 1 : crossTimes
     nCount = nCount+1; % 把计算出的离散值分别放到nCount行的矩阵中
    
     for k_x1 = 1 : n_x1-1
        u(nCount, k_x1) = f_one(u(nCount-1,:), waveLength, L, a, x1(k_x1)); 
        Ua(nCount, k_x1) = abs( u(nCount, k_x1) );
        Up(nCount, k_x1) = angle( u(nCount, k_x1) )*180/pi;
     end 
end
     


axes(handles.axesA);
cla;     
hold on;   
plot(x1, Ua(nCount,:),'Color', 'r');
xlabel('X - 单位M','Color', 'm');
ylabel('Y - 振幅', 'Color', 'm');
title('振幅分布', 'Color','b');
hold off;

axes(handles.axesP);
cla;     
hold on;   
plot(x1, Up(nCount,:),'Color', 'r');
xlabel('X - 单位M','Color', 'm');
ylabel('Y - 相位','Color', 'm');
title('相位分布','Color', 'b');

hold off;
 


function pushbuttonToDrawP_Callback(hObject, eventdata, handles)



⌨️ 快捷键说明

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