?? bodedelay.m
字號:
function varargout = bodedelay(varargin)% BODEDELAY M-file for bodedelay.fig% BODEDELAY, by itself, creates a new BODEDELAY or raises the existing% singleton*.%% H = BODEDELAY returns the handle to a new BODEDELAY or the handle to% the existing singleton*.%% BODEDELAY('Property','Value',...) creates a new BODEDELAY using the% given property value pairs. Unrecognized properties are passed via% varargin to bodedelay_OpeningFcn. This calling syntax produces a% warning when there is an existing singleton*.%% BODEDELAY('CALLBACK') and BODEDELAY('CALLBACK',hObject,...) call the% local function named CALLBACK in BODEDELAY.M with the given input% arguments.%% *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 bodedelay% Last Modified by GUIDE v2.5 01-May-2005 16:07:57% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @bodedelay_OpeningFcn, ... 'gui_OutputFcn', @bodedelay_OutputFcn, ... 'gui_LayoutFcn', [], ... 'gui_Callback', []);if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});endif 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 bodedelay is made visible.function bodedelay_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 unrecognized PropertyName/PropertyValue pairs from the% command line (see VARARGIN)Handle_text = findobj('Tag','layoutedit'); %當沒有選擇要進行何種分析時,文本窗口中給出如下提示。 Str(1) = {'在右邊選擇響的系統模型'}; Str(2) = {'然后輸入參數'}; Str(3) = {'上圖將顯示分結果'}; set(Handle_text,'String',Str);% Choose default command line output for bodedelayhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes bodedelay wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = bodedelay_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 structurevarargout{1} = handles.output;% --- Executes on button press in bodedrew.function bodedrew_Callback(hObject, eventdata, handles)% hObject handle to bodedrew (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)Val_Selection = get(findobj('Tag','passorzp'),'Value');Val_clooporopen = get(findobj('Tag','clooporopen'),'Value');%--------根據判斷建立相應的模型---------switch Val_Selection%----獲得傳遞函數形式的輸入 ---------- case 1 Handle_numorzero = findobj( 'Tag','numorzero'); Val_numzero = get(Handle_numorzero,'String'); Val_num = str2num(Val_numzero); Handle_denorp = findobj('Tag','denorp'); Val_denp = get(Handle_denorp,'String'); Val_den = str2num(Val_denp); Handle_kedit = findobj('Tag','kedit'); Val_kedit = get (Handle_kedit,'String'); Val_k = str2num(Val_kedit); num = Val_num*Val_k; den = Val_den;%獲得零極點形式的輸入 case 2 Handle_numorzero = findobj( 'Tag','numorzero'); Val_numzero = get (Handle_numorzero,'String'); Val_zero = str2num(Val_numzero); Handle_denorp = findobj('Tag','denorp'); Val_denorp = get(Handle_denorp,'String'); Val_p = str2num(Val_denorp); Handle_kedit = findobj('Tag','kedit'); Val_kedit = get (Handle_kedit,'String'); Val_k = str2num(Val_kedit); [num,den] = zp2tf(Val_zero,Val_p,Val_k); end%------判斷輸入模型為開環or閉環并建立相應的模型-------if (Val_clooporopen ==2) [numc,denc] = cloop(num,den); sys = tf(numc,denc); [z,p,k] = tf2zp(numc,denc);else numc = num; denc = den; sys = tf(numc,denc); [z,p,k] = tf2zp(numc,denc);endbode(sys);flag =real(p);%當系統在s坐標平面的右半側有極點時,系統不穩定。if (find(flag>0)~=0) Handle_text = findobj('Tag','layoutedit'); Str(1) = {''}; Str(2) = {'該系統不穩定'}; set (Handle_text,'String',Str); %當系統有0極點是,該系統處于臨屆穩定狀態。 elseif (find(flag==0)~=0) Handle_text = findobj('Tag','layoutedit'); Str(1) = {''}; Str(2) = {'該系統處于臨屆穩定狀態'}; set (Handle_text,'String',Str);%當該系統的極點全部位于s平面的左半面時,該系統處于穩定狀態。 else Handle_text = findobj('Tag','layoutedit'); Str(1) = {'該系統穩定'};%該系統穩定,并給出相應的頻域參數。 [M,P,w] = bode(sys); [GM,PM,wcg,wcp] = margin(M,P,w); Str(2) = {'該系統的增益裕量為:'}; Str(3) = {GM}; Str(4) = {'該系統的相位裕量為:'}; Str(5) = {PM}; Str(6) = {'該系統的相位交界頻率為:'}; Str(7) = {wcg}; Str(8) = {'該系統的增益交界頻率為:'}; Str(9) = {wcp}; set(Handle_text,'String',Str);end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -