code_convex.zip

• maryamam
了解作者
• matlab
开发工具
• 33.8KB
文件大小
• zip
文件格式
• 0
收藏次数
• 5 积分
下载积分
• 1
下载次数
• 2022-01-17 09:27
上传日期
matlab for Convex Relaxation for Model Predictive
code_convex.zip
• code
• disturbance.mdl
105.2KB
• tune.m
2.1KB
• imc1.mdl
38.7KB
• Order_Reduction.m
1.4KB
• nyqmimo.m
5.1KB
• CalJ.m
1KB
• Nyquist.m
2.3KB
• Main.m
1.5KB

function nyqmimo(a,b,c,d,wi,wf,step) %NYQMIMO - Find the general nyquist plot of a LTI nxn MIMO and SISO models % Nyqmimo is capable of finding the roundings due to integral effects and % improper transfer functions. % % Syntax: nyqmimo(SYS,wi,wf,step) % % Inputs: % a,b,c,d - System (SYS) % wi - Initial Frequency value (default wi=1e-3) % wf - Final Frequency value (default wf=1e6) % step - Amount of points between the initial and final frequency values % (default step resolution = 1000 points) % % Example 1 (SISO SYS): % G=tf([1 25],[1 5 3 -9 0]); % nyqmimo(G) % % Example 2 (Improper SISO SYS): % G=tf((1/6)*[1 7 14 12],[1 2 1]); % nyqmimo(G) % % Example 2 (MIMO SYS): % den=1.25*conv([1 1],[1 2]); % g11=tf([1 -1],den); % g12=tf([1 0],den); % g21=tf([-6],den); % g22=tf([1 -2],den); % G=[g11 g12;g21 g22]; % nyqmimo(G) % % Other m-files required: tf2sym, ss2sym % Subfunctions: Arrows % % See also: gershband % % Author: Oskar Vivero Osornio % email: oskar.vivero@gmail.com % Created: February 2006; % Last revision: 11-May-2006; % May be distributed freely for non-commercial use, % but please leave the above info unchanged, for % credit and feedback purposes %------------- BEGIN CODE -------------- %--------- Determines Syntax ----------- ni=nargin; p=sym('p'); switch ni case 1 %Transfer Function Syntax without wi, step and wf step=1000; wi=-3; wf=6; switch class(a) case 'tf' %Numeric Transfer Function Syntax G=a; g=tf2sym(G); case 'sym' %Symbolic Transfer Function Syntax g=a; end case 2 %Transfer Function [num,den] Syntax without step and wf G=tf(a,b); step=1000; wi=-3; wf=6; g=tf2sym(G); case 4 switch class(a) case 'tf' %Numeric Transfer Function Syntax with wi, step and wf G=a; g=tf2sym(G); wi=b; wf=c; step=d; case 'sym' %Symbolic Transfer Function Syntax with wi,step and wf g=a; wi=b; wf=c; step=d; case 'double' %State Space Syntax without wi, wf and step g=ss2sym(a,b,c,d); step=1000; wi=-3; wf=6; end case 7 %State Space Syntax with step and wf g=ss2sym(a,b,c,d); end %---------------------------------------- e=eig(g); m=length(e); sing_o=zeros(m,1); sing_oo=sing_o; %------ Singularities on the origin ----- lim_o=limit(e,p,0); for k=1:m if isfinite(eval(lim_o(k)))==false sing_o(k)=sing_o(k)+1; end end %-------- Checking for G improper ------- lim_oo=limit(e,p,Inf); for k=1:m if isfinite(eval(lim_oo(k)))==false sing_oo(k)=sing_oo(k)+1; end end %-------- Setting Nyquist Contour ------- w=complex(0,logspace(wi,wf,step)); n=length(w); if (sum(sing_o)>0)&&(sum(sing_oo)==0) %proper-integrators q=0:pi/50:pi/2; lemma_o=abs(w(1))*exp(i*q); freq=zeros(1,n+length(lemma_o)); freq(1,1:length(lemma_o))=lemma_o; freq(1,(length(lemma_o)+1):(length(lemma_o)+n))=w; elseif (sum(sing_o)==0)&&(sum(sing_oo>0)) %improper-continous f=pi/2:-pi/200:0; lemma_oo=abs(w(n))*exp(i*f); freq=zeros(1,n+length(lemma_oo)); freq(1,1:n)=w; freq(1,(n+1):(n+length(lemma_oo)))=lemma_oo; elseif (sum(sing_o)==0)&&(sum(sing_oo)==0) %proper-continous freq=w; else %improper-integratos q=0:pi/50:pi/2; lemma_o=abs(w(1))*exp(i*q); f=pi/2:-pi/200:0; lemma_oo=abs(w(n))*exp(i*f); freq=zeros(1,(n+length(lemma_o)+length(lemma_oo))); freq(1,1:length(lemma_o))=lemma_o; freq(1,(length(lemma_o)+1):(length(lemma_o)+n))=w; freq(1,(length(lemma_o)+n+1):(length(lemma_o)+n+length(lemma_oo)))=lemma_oo; end %--------------- MAPPING ---------------- nyq=zeros(length(freq),m); for k=1:m nyq(:,k)=subs(e(k),freq); end %--------------- PLOTTING --------------- plot(nyq) hold on plot(real(nyq),-imag(nyq),'--') plot(-1,0,'r+') if sum(sing_oo)==0 for j=1:m v1=nyq(26,j); v2=nyq(46,j); v3=nyq(200,j); v4=nyq(220,j); x1(1)=real(v1); x1(2)=real(v2); y1(1)=imag(v1); y1(2)=imag(v2); x2(1)=real(v3); x2(2)=real(v4); y2(1)=imag(v3); y2(2)=imag(v4); arrowh(x1,y1) arrowh(x2,y2) end else for j=1:m v1=nyq(860,j); v2=nyq(880,j); v3=nyq(960,j); v4=nyq(980,j); x1(1)=real(v1); x1(2)=real(v2); y1(1)=imag(v1); y1(2)=imag(v2); x2(1)=real(v3); x2(2)=real(v4); y2(1)=imag(v3); y2(2)=imag(v4); arrowh(x1,y1) arrowh(x2,y2) end end hold off %------------- END OF CODE --------------

相关推荐
• MATLAB编译器
基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件，并在没有安装MATLAB的计算机上进行部署。
• matlab入门
matlab的入门教程，很值得仔细看看，对提高matlab能力有帮助
• matlab 教程
matlab 信号处理资料，里面包含信号处理pdf文档，一些杂乱的程序和命令等
• MATLAB教程
MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程
• MATLAB 论文
基于MATLAB的论文撰写！可以为你指明一条写作MATLAB论文的道路！
• Matlab教程
Matlab讲义教程第一章节资源共享。用于学习Matlab的应用。
• matlab教程
matlab教程，PPT格式，包含 matlab基本知识、matlab入门、matlab作图、线性规划、无约束优化、非线性规划、统计工具箱、差值、微分方程等多项知识点，并且每个知识点独立成为PPT，内还含有matlab信号处理详解等文档...
• MATLAB
MATLAB 该项目是在matlab上完成的，涉及创建和移动宇宙飞船和机器人。 太空飞船和机器人是使用Matlab中的简单几何形状创建的，并通过连续变换矩阵进行移动。 这个项目教我如何使用变换矩阵（旋转，平移等）的概念...
• Matlab合集
冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版（冈萨雷斯）+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算：MATLAB技术实现(第2版)].杨淑莹.扫描版
• matlab简介
1.MATLAB 开发环境 1.1 MATLAB 的视窗环境 进入MATLAB之后，会看到一个视窗MATLAB Command Window称为指令视窗，它是你键入指令的地方同时 MATLAB也将计算结果显示在此。 1.2 简易计算 我们先从MATLAB的...