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

📄 nlsegui.m

📁 应用matlab解非线性薛定厄方程的问题
💻 M
📖 第 1 页 / 共 5 页
字号:
function varargout = nlsegui(varargin)
% NLSEGUI M-file for nlsegui.fig
%      NLSEGUI, by itself, creates a new NLSEGUI or raises the existing
%      singleton*.
%
%      H = NLSEGUI returns the handle to a new NLSEGUI or the handle to
%      the existing singleton*.
%
%      NLSEGUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in NLSEGUI.M with the given input arguments.
%
%      NLSEGUI('Property','Value',...) creates a new NLSEGUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before nlsegui_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to nlsegui_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help nlsegui

% Last Modified by GUIDE v2.5 08-May-2004 23:31:26
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
    'gui_Singleton',  gui_Singleton, ...
    'gui_OpeningFcn', @nlsegui_OpeningFcn, ...
    'gui_OutputFcn',  @nlsegui_OutputFcn, ...
    'gui_LayoutFcn',  [] , ...
    'gui_Callback',   []);
if nargin & isstr(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
% End initialization code - DO NOT EDIT


% --- Executes just before nlsegui is made visible.
function nlsegui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to nlsegui (see VARARGIN)

% Choose default command line output for nlsegui

handles.output = hObject;
guidata(hObject, handles);


%----Input Signal----------------
handles.Signal_num = 0;
guidata(hObject,handles);
handles.Signal = [];
guidata(hObject,handles);
handles.Frequency_Chirp = [];
guidata(hObject,handles);
handles.Signal_Spectrum = [];
guidata(hObject,handles);
handles.Frequency_Chirp = [];
guidata(hObject,handles);
handles.Time_Window = 20;   % Time Window = 20 T_0
guidata(hObject,handles);
handles.Samples_Num = 2^10;
guidata(hObject,handles);
handles.Time = [];
guidata(hObject,handles);
handles.Frequency = [];
guidata(hObject,handles);
%-------------Loaded Signals List-------------------
handles.Loaded_Signal_List = [];
guidata(hObject,handles);
handles.Loaded_Signal_Ppty = [];    % Signal Properties like Spectral and Temporal width. 
guidata(hObject,handles);
handles.Empty = [];
guidata(hObject,handles);
handles.Signal_Spec=[];         % Signal Specifications 
guidata(hObject,handles);
%-----------------------------------------------------
set(handles.Loaded_Signals,'String','','Value',0);
%------------------------------------------------------
%--------- Plotted Data Index--------------------------
handles.Ploted_Data_Index_Display1 = [];
guidata(hObject,handles);
handles.Ploted_Data_Index_Display2 = [];
guidata(hObject,handles);
%----- Launch Data ------------------------------
handles.Launch_Signal_List = [];
guidata(hObject,handles);
handles.Media_Ppty = [];   
guidata(hObject,handles);
handles.Launch_Signal_num = 0;
guidata(hObject,handles);
handles.Input_Signal_Index = [];
guidata(hObject,handles);
handles.Launch_Data_Signal = [];
guidata(hObject,handles);
handles.Launch_Data_Signal_Ppty = [];
guidata(hObject,handles);
handles.Launch_Data_Signal_chirp = [];
guidata(hObject,handles);
handles.Launch_Data_Spectrum = [];
guidata(hObject,handles);
handles.Step_N = 100;
guidata(hObject,handles);
handles.z = [];
guidata(hObject,handles);
handles.L_Empty = [];
guidata(hObject,handles);
handles.Launch_Status = [];
guidata(hObject,handles);
handles.Para_3D = [10];
guidata(hObject,handles);
handles.Para_Mov = [10,handles.Time_Window,1;10,2*pi*(handles.Samples_Num-1)/handles.Time_Window,handles.Samples_Num];
guidata(hObject,handles);
handles.show_side_by_side = [0,0];
guidata(hObject,handles);
handles.FC_SAL = [-50, 50, handles.Time_Window];
guidata(hObject,handles);
handles.Play_Index_Display1 = 0;
guidata(hObject,handles);
handles.Play_Index_Display2 = 0;
guidata(hObject,handles);
handles.Special_Medium_Index = [];
guidata(hObject,handles);
handles.fun_Second_order_GVD = {'','','',''};
guidata(hObject,handles);
handles.TW_Compare_Index = [];
guidata(hObject,handles);
handles.SW_Compare_Index = [];
guidata(hObject,handles);
handles.Snapshot_Compare_Index = [];
guidata(hObject,handles);
% Update handles structure
guidata(hObject, handles);

% UIWAIT makes nlsegui wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = nlsegui_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --------------------------------------------------------------------
function gFile_Callback(hObject, eventdata, handles)
% hObject    handle to gFile (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% --------------------------------------------------------------------
% --------------------------------------------------------------------
% ---------------------INPUT SIGNAL ----------------------------------
% --------------------------------------------------------------------
% --------------------------------------------------------------------

function gInput_Callback(hObject, eventdata, handles)

% --------------------------------------------------------------------
function gPT_Callback(hObject, eventdata, handles)
% Menu       Pulse Type

% --------------------------------------------------------------------
function gSG_Callback(hObject, eventdata, handles)
% Menu       Super Gaussian   

%----------- Pulse Parameters ----------------

handles.Signal_Spec= [handles.Signal_Spec;[1,1,0,1,1]];
guidata(hObject,handles);
prompt{1} = 'Width';
prompt{2} = 'm';
prompt{3} = 'Chirp Parameter';
prompt{4} = 'Amplitude';
default_ans = {num2str(handles.Signal_Spec(handles.Signal_num+1,1)),num2str(handles.Signal_Spec(handles.Signal_num+1,2)),num2str(handles.Signal_Spec(handles.Signal_num+1,3)),num2str(handles.Signal_Spec(handles.Signal_num+1,4))};
title = 'Parameters For Super-Gaussian Pulse';
answer = inputdlg(prompt,title,1,default_ans);
if ~isempty(answer),
    handles.Signal_num = handles.Signal_num + 1;
    % Taking input from the user
    guidata(hObject,handles);
    handles.Signal_Spec(handles.Signal_num,1) = str2num(answer{1});
    guidata(hObject,handles);
    handles.Signal_Spec(handles.Signal_num,2) = str2num(answer{2});
    guidata(hObject,handles);
    handles.Signal_Spec(handles.Signal_num,3) = str2num(answer{3});
    guidata(hObject,handles);
    handles.Signal_Spec(handles.Signal_num,4) = str2num(answer{4});
    guidata(hObject,handles);
    %--------------------Generating Time & Frequnecy vector ----------------------
    G=[0:(handles.Samples_Num-1)];
    step_T=handles.Time_Window/(handles.Samples_Num-1);
    handles.Time=[-handles.Time_Window/2:(handles.Time_Window/(handles.Samples_Num-1)):handles.Time_Window/2];
    guidata(hObject,handles);
    f=G/(handles.Samples_Num*step_T);
    handles.Frequency=2*pi*[f(1,1:handles.Samples_Num/2),(f(1,(handles.Samples_Num/2+1):handles.Samples_Num)-ones(1,handles.Samples_Num/2)/step_T)]
    guidata(hObject,handles);
    %----------------------------------------------------------------------
    Tmp_Signal=handles.Signal_Spec(handles.Signal_num,4)*exp(-((1+handles.Signal_Spec(handles.Signal_num,3)*sqrt(-1))/2)*(handles.Time./handles.Signal_Spec(handles.Signal_num,1)).^(2*handles.Signal_Spec(handles.Signal_num,2)));
    handles.Signal=[handles.Signal; Tmp_Signal]; 
    guidata(hObject,handles);
    %--------Finding FFT of the Signal-----------------------------------
    handles.Frequency_Chirp=[handles.Frequency_Chirp;-2*handles.Signal_Spec(handles.Signal_num,3)*handles.Signal_Spec(handles.Signal_num,2)*((handles.Time/handles.Signal_Spec(handles.Signal_num,1)).^(2*handles.Signal_Spec(handles.Signal_num,2)-1))/handles.Signal_Spec(handles.Signal_num,1)];
    guidata(hObject,handles);
    tmpFFT=fft(Tmp_Signal);
    handles.Signal_Spectrum = [handles.Signal_Spectrum;tmpFFT];
    guidata(hObject,handles);
    handles.Loaded_Signal_Ppty =[handles.Loaded_Signal_Ppty;[sqrt(var(handles.Time,abs(Tmp_Signal).^2)),sqrt(var(handles.Frequency,abs(tmpFFT).^2))]];
    guidata(hObject,handles);
    handles.Loaded_Signal_List=[handles.Loaded_Signal_List; ['S',num2str(handles.Signal_num)]];
    guidata(hObject,handles);
    handles.Empty=[handles.Empty;['         ']];
    guidata(hObject,handles);
    tmpStr=cat(2,handles.Loaded_Signal_List,handles.Empty,num2str(handles.Loaded_Signal_Ppty(:,1)),handles.Empty,num2str(handles.Loaded_Signal_Ppty(:,2)));
    set(handles.Loaded_Signals,'String',tmpStr,'Value',handles.Signal_num);
    set(handles.gRemove_IS,'Enable','on');
    set(handles.gIS_Edit,'Enable','on');
else
    handles.Signal_Spec = handles.Signal_Spec(1:handles.Signal_num,:);
    guidata(hObject,handles);
    
end
% --------------------------------------------------------------------
function gHS_Callback(hObject, eventdata, handles)
%Menu        Hyperbolic-Secant

handles.Signal_Spec =[handles.Signal_Spec;[1,0,1,0,2]];
guidata(hObject,handles);
prompt{1} = 'Width';
prompt{2} = 'Chirp Parameter';
prompt{3} = 'Amplitude'
default_ans = {num2str(handles.Signal_Spec(handles.Signal_num+1,1)),num2str(handles.Signal_Spec(handles.Signal_num+1,2)),num2str(handles.Signal_Spec(handles.Signal_num+1,3))};
title = 'Parameters For Hyperbolic-Secant Pulse';
answer = inputdlg(prompt,title,1,default_ans);
if ~isempty(answer),
    handles.Signal_num=handles.Signal_num+1;
    guidata(hObject,handles);
    %----------- Pulse Parameters ----------------
    
    handles.Signal_Spec(handles.Signal_num,1) =str2num(answer{1})
    guidata(hObject,handles);
    handles.Signal_Spec(handles.Signal_num,2) =str2num(answer{2});

⌨️ 快捷键说明

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