📄 nlsegui.m
字号:
guidata(hObject,handles);
handles.Signal_Spec(handles.Signal_num,3) =str2num(answer{3});
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,3)*sech(handles.Time./handles.Signal_Spec(handles.Signal_num,1)).*exp(-((handles.Signal_Spec(handles.Signal_num,2)*sqrt(-1))/2)*(handles.Time./handles.Signal_Spec(handles.Signal_num,1)).^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,2)*(handles.Time/handles.Signal_Spec(handles.Signal_num,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 gNoS_Callback(hObject, eventdata, handles)
% Menu Number of Samples
if handles.Launch_Signal_num~=0,
errordlg('Invoked Resolution Conflicts with Launch Module!','Error Dialog Box','modal');
else
prompt{1} = 'Number of Sampling Points(Radix 2)';
default_ans = {num2str(handles.Samples_Num)};
title = 'Number of Sampling Points';
answer = inputdlg(prompt,title,1,default_ans);
if ~isempty(answer),
handles.Samples_Num = str2num(answer{1});
guidata(hObject,handles);
if handles.Signal_num~=0,
%--------------------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);
%----------------------------------------------------------------------
handles.Signal=[];
guidata(hObject,handles);
handles.Signal_Spectrum = [];
guidata(hObject,handles);
for n=1:handles.Signal_num,
if handles.Signal_Spec(n,5)==2,
Tmp_Signal=handles.Signal_Spec(n,3)*sech(handles.Time./handles.Signal_Spec(n,1)).*exp(-((handles.Signal_Spec(n,2)*sqrt(-1))/2)*(handles.Time./handles.Signal_Spec(n,1)).^2);
handles.Signal(n,:)=Tmp_Signal;
guidata(hObject,handles);
%--------Finding FFT of the Signal-----------------------------------
handles.Frequency_Chirp=[handles.Frequency_Chirp;-2*handles.Signal_Spec(handles.Signal_num,2)*(handles.Time/handles.Signal_Spec(handles.Signal_num,1))/handles.Signal_Spec(handles.Signal_num,1)];
guidata(hObject,handles);
tmpFFT=fft(Tmp_Signal);
handles.Signal_Spectrum(n,:) = tmpFFT;
guidata(hObject,handles);
handles.Loaded_Signal_Ppty(n,:) =[sqrt(var(handles.Time,abs(Tmp_Signal).^2)),sqrt(var(handles.Frequency,abs(tmpFFT).^2))];
guidata(hObject,handles);
elseif handles.Signal_Spec(n,5)==1,
Tmp_Signal=handles.Signal_Spec(n,4)*exp(-((1+handles.Signal_Spec(n,3)*sqrt(-1))/2)*(handles.Time./handles.Signal_Spec(n,1)).^(2*handles.Signal_Spec(n,2)));
handles.Signal(n,:)=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(n,:) = tmpFFT;
guidata(hObject,handles);
handles.Loaded_Signal_Ppty(n,:) = [sqrt(var(handles.Time,abs(Tmp_Signal).^2)),sqrt(var(handles.Frequency,abs(tmpFFT).^2))];
guidata(hObject,handles);
end
end
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);
end
end
end
% --------------------------------------------------------------------
function gTW_Callback(hObject, eventdata, handles)
% Menu Time Window
if handles.Launch_Signal_num ~=0,
errordlg('Invoked Resolution Conflicts with Launch Module!','Error Dialog Box','modal');
else
prompt{1} = 'Time Window';
default_ans = {num2str(handles.Time_Window)};
title = 'Time Window';
answer = inputdlg(prompt,title,1,default_ans);
if ~isempty(answer),
handles.Time_Window = str2num(answer{1})
guidata(hObject,handles);
if handles.Signal_num~=0,
%--------------------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);
%----------------------------------------------------------------------
handles.Signal=[];
guidata(hObject,handles);
handles.Signal_Spectrum = [];
guidata(hObject,handles);
for n=1:handles.Signal_num,
if handles.Signal_Spec(n,5)==2,
Tmp_Signal=handles.Signal_Spec(n,3)*sech(handles.Time./handles.Signal_Spec(n,1)).*exp(-((handles.Signal_Spec(n,2)*sqrt(-1))/2)*(handles.Time./handles.Signal_Spec(n,1)).^2);
handles.Signal(n,:)=Tmp_Signal;
guidata(hObject,handles);
%--------Finding FFT of the Signal-----------------------------------
handles.Frequency_Chirp=[handles.Frequency_Chirp;-2*handles.Signal_Spec(handles.Signal_num,2)*(handles.Time/handles.Signal_Spec(handles.Signal_num,1))/handles.Signal_Spec(handles.Signal_num,1)];
guidata(hObject,handles);
tmpFFT=fft(Tmp_Signal);
handles.Signal_Spectrum(n,:) = tmpFFT;
guidata(hObject,handles);
handles.Loaded_Signal_Ppty(n,:) =[sqrt(var(handles.Time,abs(Tmp_Signal).^2)),sqrt(var(handles.Frequency,abs(tmpFFT).^2))];
guidata(hObject,handles);
elseif handles.Signal_Spec(n,5)==1,
Tmp_Signal=handles.Signal_Spec(n,4)*exp(-((1+handles.Signal_Spec(n,3)*sqrt(-1))/2)*(handles.Time./handles.Signal_Spec(n,1)).^(2*handles.Signal_Spec(n,2)));
handles.Signal(n,:)=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(n,:) = tmpFFT;
guidata(hObject,handles);
handles.Loaded_Signal_Ppty(n,:) = [sqrt(var(handles.Time,abs(Tmp_Signal).^2)),sqrt(var(handles.Frequency,abs(tmpFFT).^2))];
guidata(hObject,handles);
end
end
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);
end
end
end
% --------------------------------------------------------------------
function gLaunch_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
function gSpectrum_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
function gSS_Display1_Callback(hObject, eventdata, handles)
% Menu Show Spectrum
n=get(handles.Loaded_Signals,'Value');
if n==0,
errordlg('No Signal selected!','Error Dialog Box','modal');
elseif ~isempty(handles.Ploted_Data_Index_Display1),
button = questdlg('Do you want to Erase the existing plot?','','Yes','No','Yes');
if strcmp(button,'Yes'),
handles.Ploted_Data_Index_Display1 = [2,n];% 2---> refers to spectrum plot
guidata(hObject,handles);
h=plot( fftshift(handles.Frequency),((1/handles.Samples_Num)*abs(fftshift(handles.Signal_Spectrum(n,:)))).^2,'Parent',handles.Display1);
set(get(handles.Display1,'YLabel'),'String','Intensity','FontSize',12,'FontName','Courier New','FontWeight','bold')
set(get(handles.Display1,'XLabel'),'String','Frequency (T_0^{-1})','FontSize',12,'FontName','Courier New','FontWeight','bold')
set(handles.gRefreshDisplay1,'Enable','on','Visible','on');
set(handles.gShowframes,'Visible','off','Value',1)
set(handles.gShow1,'Enable','on');
set(handles.gT1,'String','');
handles.Play_Index_Display1 = 0;
guidata(hObject,handles);
handles.show_side_by_side(1,1) = 0;
guidata(hObject,handles);
else
s=2;found=0;
[tmp_m,tmp_n]=size(handles.Ploted_Data_Index_Display1);
while ~found && s<=tmp_n,
if n==handles.Ploted_Data_Index_Display1(1,s),
found=1;
end
s=s+1;
end
if found==0,
handles.Ploted_Data_Index_Display1 = [handles.Ploted_Data_Index_Display1,n];
guidata(hObject,handles);
end
[tmp_m,tmp_n]=size(handles.Ploted_Data_Index_Display1);
h=plot( fftshift(handles.Frequency),((1/handles.Samples_Num)*abs(fftshift(handles.Signal_Spectrum(handles.Ploted_Data_Index_Display1(1,2:tmp_n),:)))).^2,'Parent',handles.Display1);
set(get(handles.Display1,'YLabel'),'String','Intensity','FontSize',12,'FontName','Courier New','FontWeight','bold')
set(get(handles.Display1,'XLabel'),'String','Frequency (T_0^{-1})','FontSize',12,'FontName','Courier New','FontWeight','bold')
set(handles.gRefreshDisplay1,'Enable','on','Visible','on');
set(handles.gShowframes,'Visible','off','Value',1)
set(handles.gShow1,'Enable','on');
set(handles.gT1,'String','')
handles.Play_Index_Display1 = 0;
guidata(hObject,handles);
handles.show_side_by_side(1,1) = 0;
guidata(hObject,handles);
end
else
handles.Ploted_Data_Index_Display1 = [2,n];
guidata(hObject,handles);
h=plot( fftshift(handles.Frequency),((1/handles.Samples_Num)*abs(fftshift(handles.Signal_Spectrum(n,:)))).^2,'Parent',handles.Display1);
set(get(handles.Display1,'YLabel'),'String','Intensity','FontSize',12,'FontName','Courier New','FontWeight','bold')
set(get(handles.Display1,'XLabel'),'String','Frequency (T_0^{-1})','FontSize',12,'FontName','Courier New','FontWeight','bold')
set(handles.gRefreshDisplay1,'Enable','on','Visible','on');
set(handles.gShowframes,'Visible','off','Value',1);
set(handles.gShow1,'Enable','on');
set(handles.gT1,'String','');
handles.Play_Index_Display1 = 0;
guidata(hObject,handles);
handles.show_side_by_side(1,1) = 0;
guidata(hObject,handles);
end
% --------------------------------------------------------------------
function gSS_Display2_Callback(hObject, eventdata, handles)
% Menu Show Spectrum
n=get(handles.Loaded_Signals,'Value');
if n==0,
errordlg('No Signal selected!','Error Dialog Box','modal');
elseif ~isempty(handles.Ploted_Data_Index_Display2),
button = questdlg('Do you want to Erase the existing plot?','','Yes','No','Yes');
if strcmp(button,'Yes'),
handles.Ploted_Data_Index_Display2 = [2,n];
guidata(hObject,handles);
h=plot( fftshift(handles.Frequency),((1/handles.Samples_Num)*abs(fftshift(handles.Signal_Spectrum(n,:)))).^2,'Parent',handles.Display2);
set(get(handles.Display2,'YLabel'),'String','Intensity','FontSize',12,'FontName','Courier New','FontWeight','bold')
set(get(handles.Display2,'XLabel'),'String','Frequency (T_0^{-1})','FontSize',12,'FontName','Courier New','FontWeight','bold')
set(handles.gRefreshDisplay2,'Enable','on','Visible','on');
set(handles.gShowframe2,'Visible','off','Value',1)
set(handles.gShow2,'Enable','on');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -