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

📄 nlsegui.m

📁 应用matlab解非线性薛定厄方程的问题
💻 M
📖 第 1 页 / 共 5 页
字号:
    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 + -