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

📄 bodedelay.m

📁 guide的玻德图绘制。应用matlab的绘图功能等。
💻 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 + -