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

📄 zhihou.m

📁 经典控制理论MATLAB-GUI设计
💻 M
字号:
function varargout = zhihou(varargin)%ZHIHOU M-file for zhihou.fig%      ZHIHOU, by itself, creates a new ZHIHOU or raises the existing%      singleton*.%%      H = ZHIHOU returns the handle to a new ZHIHOU or the handle to%      the existing singleton*.%%      ZHIHOU('Property','Value',...) creates a new ZHIHOU using the%      given property value pairs. Unrecognized properties are passed via%      varargin to zhihou_OpeningFcn.  This calling syntax produces a%      warning when there is an existing singleton*.%%      ZHIHOU('CALLBACK') and ZHIHOU('CALLBACK',hObject,...) call the%      local function named CALLBACK in ZHIHOU.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 zhihou% Last Modified by GUIDE v2.5 12-Jun-2005 14:25:05% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',       mfilename, ...                   'gui_Singleton',  gui_Singleton, ...                   'gui_OpeningFcn', @zhihou_OpeningFcn, ...                   'gui_OutputFcn',  @zhihou_OutputFcn, ...                   'gui_LayoutFcn',  [], ...                   'gui_Callback',   []);if nargin && ischar(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 zhihou is made visible.function zhihou_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)% Choose default command line output for zhihouhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes zhihou wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = zhihou_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 zhihou.function zhihou_Callback(hObject, eventdata, handles)% hObject    handle to zhihou (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);endHandle_edit5   =    findobj('Tag','edit5');Val_edit5      =     get(Handle_edit5,'string');val5           =      str2num(Val_edit5);Handle_edit6   =    findobj('Tag','edit6');Val_edit6      =     get(Handle_edit6,'string');val6          =     str2num(Val_edit6);n1   =  length(numc)n2   =   length(denc)if denc(n2) ~= 0                k1 = numc(n1)/denc(n2);elseif denc(n2-1) ~=0                k1 = numc(n1)/denc(n2-1);elseif denc(n2-2) ~=0                k1 = numc(n1)/denc(n2-2);endkc=100/val5*k1;w=logspace(-1,2,200);[Mg1,Pg1,w]=bode(kc*numc,denc,w);dpm=0;Pm=0;%先设置最小相位裕量为0while(Pm<val6)    Pg=val6-180+dpm;%试寻找频率点,在该点要求开环频率特性的相角    wgc=spline(Pg1,w,Pg);%spline():样条插值        Mg_db=20*log10(Mg1);%Mg1本来是用度表示的,现转换成分贝的形式    gr1=spline(w,Mg_db,wgc);    gr=-gr1;    alpha=10^(gr/20);        T=10/(alpha*wgc);    numtwo=[alpha*T,1]*kc;    dentwo=[T,1];        Gjz=tf(numtwo,dentwo);        [numend,denend]=series(numc,denc,numtwo,dentwo);    Gjzhou=tf(numend,denend);        [Gm,Pm,Wcg,Wcp]=margin(numend,denend);    dpm=dpm+0.1;endfigure(1)hold onbode(Gjzhou,Gjz,sys);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -