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

📄 zhcqjiaozheng.asv

📁 微波技术
💻 ASV
字号:
function varargout = zhcqjiaozheng(varargin)%ZHCQJIAOZHENG M-file for zhcqjiaozheng.fig%      ZHCQJIAOZHENG, by itself, creates a new ZHCQJIAOZHENG or raises the existing%      singleton*.%%      H = ZHCQJIAOZHENG returns the handle to a new ZHCQJIAOZHENG or the handle to%      the existing singleton*.%%      ZHCQJIAOZHENG('Property','Value',...) creates a new ZHCQJIAOZHENG using the%      given property value pairs. Unrecognized properties are passed via%      varargin to zhcqjiaozheng_OpeningFcn.  This calling syntax produces a%      warning when there is an existing singleton*.%%      ZHCQJIAOZHENG('CALLBACK') and ZHCQJIAOZHENG('CALLBACK',hObject,...) call the%      local function named CALLBACK in ZHCQJIAOZHENG.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 zhcqjiaozheng% Last Modified by GUIDE v2.5 12-Jun-2005 15:04:32% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',       mfilename, ...                   'gui_Singleton',  gui_Singleton, ...                   'gui_OpeningFcn', @zhcqjiaozheng_OpeningFcn, ...                   'gui_OutputFcn',  @zhcqjiaozheng_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 zhcqjiaozheng is made visible.function zhcqjiaozheng_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 zhcqjiaozhenghandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes zhcqjiaozheng wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = zhcqjiaozheng_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 zhcq.function zhcq_Callback(hObject, eventdata, handles)% hObject    handle to zhcq (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);end kc = val5/k1;%确定校正后的系统的穿越频率wc。            [Mg1,Pg1,w] = bode(kc*numc,denc);            wc = spline(Pg1,w,-180);            %确定滞后部分的转折频率。            W2 = wc/10;            T2 = 1/W2;            %取得希望得到的相角裕量。            phi = val6;            %循环增加希望的相角裕量。            Pm = 0;            dpm = 0;            while (Pm<val6)                %确定校正装置的超前部分的转折频率。                phim = (phi+dpm)*pi/180;                beta = (1+sin(phim))/(1-sin(phim));                Mg1wc = spline(w,Mg1,wc);                W3 = (Mg1wc/beta)*wc;                T1 = 1/W3;                %建立校正装置的传递函数。                numt = conv([T1,1],[T2,1])*kc;                dent = conv([T1/beta,1],[beta*T2,1]);                syst = tf(numt,dent);                %建立校正后系统的传递函数,供后续程序使用。                [num,den] = series(numc,denc,numt,dent);                sys = tf(num,den);                %取值进行判断取得的校正装置是否满足要求。                [Gm,Pm,Wcg,Wcp] = margin(num,den);                dpm = dpm+0.1;            end            %在命令窗口中输出校正装置的参数及传递函数模型。            numt            dent            syst = tf(numt,dent)        end

⌨️ 快捷键说明

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