📄 nlsegui.m
字号:
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 + -