【MATLAB】根軌跡的繪制及rltool工具的使用

目錄

  • 一、MATLAB中傳遞函數的表示
  • 二、rlocus函數繪制根軌跡
    • 1.常規根軌跡仿真示例
    • 2.參數根軌跡仿真示例
    • 3.零度根軌跡仿真示例
  • 三、圖形化工具rltool介紹

一、MATLAB中傳遞函數的表示

在繪制系統的根軌跡之前,需要知道傳遞函數在matlab中如何表示。
在matlab中,通常用向量表示一個多項式。例如P=[1 2 3 ]表示 F(s)=s2+2s+3。而對于傳遞函數的表示,通常利用一個向量num表示其分子多項式,den表示分母多項式。例如表示 F ( s ) = 3 s 2 + s s 3 + 5 s + 8 F(s)=\frac{3s^2+s}{s^3+5s+8} F(s)=s3+5s+83s2+s?的代碼如下:

clear all;
close all;
num=[3 1 0];
den=[1 0 5 8];
sys=tf(num,den)

運行結果:

sys =3 s^2 + s-------------s^3 + 5 s + 8Continuous-time transfer function.

如果是兩個多項式是相乘的形式,可以利用conv()函數。例如Fs=(s2+3s+1)(4s+1),則可以用den=conv([1 3 1],[4 1])計算出兩個多項式相乘后的系數。

二、rlocus函數繪制根軌跡

MATLAB提供rlocus函數可以直接用于繪制系統的根軌跡。還能夠允許用戶交互式的選取根軌跡上的值。下表是rlocus函數的常見用法。

函數使用說明
rlocus(G)繪制開環傳遞函數為G的根軌跡
rlocus(G1,G2,…)在同一張圖上繪制多個系統的根軌跡
rlocus(G,k)繪制系統的給定增益向量k的根軌跡
[r,k]=rlocus(G)返回根軌跡參數,r為閉環特征根
r=rlocus(G,k)返回系統的開環增益為k時的閉環特征根

下面分別演示常規根軌跡、參數根軌跡和零度根軌跡的繪制步驟。

1.常規根軌跡仿真示例

例: 某系統的結構如下圖所示,繪制出其根軌跡。
圖1-1
其中: G ( s ) H ( s ) = K ? ( s + 5 ) ( s + 2 ) ( s + 3 ) . G(s)H(s) = \frac{K^*(s+5)}{(s+2)(s+3)}. G(s)H(s)=(s+2)(s+3)K?(s+5)?.
求解程序如下:

clear all;
close all;
num=[1 5];%num表示傳遞函數分子多項式系數向量
den=conv([1 2],[1 3]);%den表示傳遞函數分母多項式系數向量
sys=tf(num,den);%得到傳遞函數sys
rlocus(sys)%繪制根軌跡,也可以用rlocus(num,den)直接繪制。

運行結果如下圖:
圖1-2

2.參數根軌跡仿真示例

繪制參數根軌跡和繪制常規根軌跡的過程基本上相同。只需要在繪制參數根軌跡之前,引入“等效開環傳遞函數”,將繪制參數根軌跡的問題化為繪制K*變化時的根軌跡形式來處理。
例: 單位負反饋系統開環傳遞函數為 G ( s ) = k s ( s + 2 k ) . G(s) = \frac{k}{s(s+2k)}. G(s)=s(s+2k)k?.
繪制出k=0→∞時的根軌跡。
解: 首先將上述傳遞函數轉化為:
G ? ( s ) = k ( 2 s + 1 ) s 2 . G^*(s) = \frac{k(2s+1)}{s^2}. G?(s)=s2k(2s+1)?.
然后就按照常規根軌跡的繪制步驟進行繪制,代碼如下:

clear all;
close all;
num=[2 1];
den=[1 0 0];
rlocus(num,den);

運行結果如下:
圖1-3

3.零度根軌跡仿真示例

繪制零度根軌跡和繪制常規根軌跡的過程也基本上相同。唯一的差別是在繪制零度根軌跡時,需要在表示傳遞函數分子多項式的系數前添加一個負號,舉個例子如下。
例: 某正反饋系統的結構圖如下所示,
圖1-4
其中: G ( s ) H ( s ) = K ? s ( s + 5 ) ( s + 8 ) ( s 2 + 2 s + 2 ) . G(s)H(s) = \frac{K^*s(s+5)}{(s+8)(s^2+2s+2)}. G(s)H(s)=(s+8)(s2+2s+2)K?s(s+5)?.
試繪制出根軌跡。
代碼如下:

clear all;
close all;
num=[-1 -5 0];
den=conv([1 8],[1 2 2]);
Gs=tf(num,den);
rlocus(Gs)

運行結果如下:
圖1-5

三、圖形化工具rltool介紹

MATLAB的rltool工具是一個圖形化的工具,能夠顯示出系統的根軌跡以及系統的響應,同時也能夠繪制系統的Bode圖、奈奎斯特圖和Nichols圖等。rltool工具提供了一個非常直觀的界面,幫助用戶設計、分析和仿真控制系統,使得控制器的設計變得更加簡單和高效。
下圖是rltool工具界面的介紹。
在這里插入圖片描述
rltool工具默認的系統結構如下圖所示,
在這里插入圖片描述
其中G為被控對象,也就是輸入rltool(sys)命令時傳遞函數sys,C為控制器(補償器),在本文中C的值就是開環增益K的值。如果要改變系統的結構圖,在菜單欄的第三項“Edit Architecture”中選擇系統結構。
rltool常用命令如下表:

函數說明
rltool打開rltool工具
rltool(PLANT)指定被控對象G的模型,PLANT是用TF、ZPK或SS創建的任何線性模型。
rltool(PLANT,COMP)進一步指定控制器C的模型,COMP是用TF、ZPK或SS創建的任何線性模型。
rltool(PLANT,COMP,LocationFlag,FeedbackSign)LocationFlag指定控制器的位置,FeedbackSign決定反饋符號。LocationFlag=‘forward’時,控制器C在前向通道上;LocationFlag=‘feedback’時,控制器C在反饋回路上;FeedbackSign='-1’為負反饋;FeedbackSign=’1‘為正反饋。

通過以下的例子來簡單介紹rltool工具的使用方法。

例: 某系統的方框圖下圖所示,
圖2-1
已知該系統為單位負反饋系統,被控對象為 G ( s ) = 1 s 3 + 20 s 2 + 100 s G(s)=\frac{1}{s^3+20s^2+100s} G(s)=s3+20s2+100s1?,其中C(s)為比例控制器, C ( s ) = K C(s)=K C(s)=K,試繪制出K=0→∞時的系統根軌跡,另外討論分別加入環節(s+4)和(s+2)對系統根軌跡的影響(C(s)=K(s+4)和C(s)=K(s+2)),并用階躍響應驗證結果。
解:
程序代碼如下:

clear all;
close all;
num=[1];
den=[1 20 100 0];
Gs=tf(num,den);%建立被控對象傳遞函數
rltool(Gs)%打開rltool工具界面

運行以上代碼過后,進入到rltool工具的界面,如下圖所示。其界面會顯示出該系統的根軌跡圖和K=1時系統的階躍響應。根軌跡圖中的紅點表示當前系統的閉環特征根,可以拖動紅點來改變當前系統的閉環特征根,拖動紅點的同時系統的階躍響應也會發生改變。而此時左邊"Controllers or Fixed Blocks"狀態欄中C的值就是當前系統的開環增益。
在這里插入圖片描述
在這里插入圖片描述

然后給系統添加一個環節(s+4),只需要在根軌跡圖右擊鼠標,選擇添加零點極點"Add Pole or Zero"即可,如下如圖所示,
在這里插入圖片描述
選擇"Real Zero"添加實數零點,再在實數坐標上點擊’-4‘的位置,添加完成后如下圖所示,可以看到此時C的值為(s+4)。為了下一步能和添加環節(s+2)后對比系統的階躍響應,先將該系統儲存起來,點擊菜單欄的"Store"選項儲存為Design1。
在這里插入圖片描述
接下來添加環節(s+2),只需要將剛才的“-4”零點拖拽到“-2”處,添加過后的結果如下圖所示,

在這里插入圖片描述

在這里插入圖片描述
為了對比兩個環節的階躍響應,首先把兩個系統的開環增益都設置為了1(也就是把控制圖中C的值設置為1)然后再點擊"Compare"選項選擇Design1和當前系統進行對比,對比圖如下,
在這里插入圖片描述
其中,藍色曲線為當前系統的階躍響應(添加了環節(s+2)的系統),綠色曲線為Design1的系統階躍響應(添加了環節(s+4)的系統)。

rltool的功能遠不止畫根軌跡,它也可以畫Bode圖、奈奎斯特圖等等,能夠對系統時域和頻域分析起到很大的幫助,大家可以根據自己需要自行去探索

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164847.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164847.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164847.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VOC數據集和COCO數據集直接的相互轉換

VOC數據集格式 get_list.py import os import random import shutil# 設置隨機種子 random.seed(1000)# 判斷Annotations和JpegImages是否對應 train_precent=0.8 label_path= "../../Annotations" print(os.path.abspath(label_path)) save="../Main" pr…

repo init報error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

repo init報error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 1 repo init出錯的信息2 解決方法 在ubuntu執行repo init的時候報了repo init報error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed這種錯誤,解決方法是需要更新本地…

PS給圖片增加一個白色邊框。

問題描述:PS如何給圖片增加一個白色邊框? 解決辦法: 第一步:使用shiftAltA快捷鍵,在圖片四周拉出一個灰白色的邊框。如下圖所示: 第二步,使用快捷鍵Ctrlshiftn新建一個圖層。 并把新建的圖層…

創建maven的web項目

(一)創建maven的web項目 Step1、創建一個普通的maven項目 (1)新建一個empty project,命名為SSM2。 點擊項目名,右鍵new,選擇Module,左側選擇“Maven archetype”,可以給…

我叫:快速排序【JAVA】

1.自我介紹 1.快速排序是由東尼霍爾所發展的一種排序算法。 2.快速排序又是一種分而治之思想在排序算法上的典型應用。 3.本質上來看,快速排序應該算是在冒泡排序基礎上的遞歸分治法。 2.思想共享 快速排序(Quicksort)是對冒泡排序的一種改進。基本思想是:通過一趟…

【iOS】數據持久化(二)之歸檔和解檔(iOS 13以后)

在之前介紹的數據存儲方法中,不管是NSUserDefaults還是plist文件都不能對自定義對象進行存儲,OC提供的解歸檔恰好解決了這個問題 本片文章對 iOS13 以后的版本 歸檔和解檔 進行介紹。老版本的解歸檔見這篇文章:【iOS】文件(對象數…

Python Anaconda創建虛擬環境及Pycharm使用虛擬環境

目錄 前言 一、Anaconda與Pycharm 二、conda常用命令 三、Pycharm使用虛擬環境 總結 前言 我們在做開發任務時可能會創建多個項目,這些項目可能會依賴于不同的Python環境。比如有的用到Python3.6、有的用到Python3.7;有的用Pytorch開發、有的用Tens…

解決:ImportError: cannot import name ‘Sequence‘ from ‘collections‘

解決:ImportError: cannot import name ‘Sequence‘ from ‘collections‘ 背景 在使用之前的代碼時,報錯: File “G:\research\code\MicroDE_py\plot_bcic_iv_4_ecog_trial.py”, line 262, in from skorch.helper import predefined_spl…

Java 數據結構篇-實現單鏈表核心API

🔥博客主頁: 小扳_-CSDN博客 ?感謝大家點贊👍收藏?評論? 文章目錄 1.0 單鏈表的說明 2.0 單鏈表的創建 2.1 單鏈表 - 頭插節點 2.2 單鏈表 - 遍歷 2.2.1 使用簡單的 for/while 循環 2.2.2 實現 forEach 方法 2.2.3 實現迭代器的方法 2.…

UE5 中的computer shader使用

轉載:UE5 中的computer shader使用 - 知乎 (zhihu.com) 目標 通過藍圖輸入參數,經過Compture Shader做矩陣運算 流程 1. 新建插件 2. 插件設置 3. 聲明和GPU內存對齊的參數結構 4. 聲明Compture Shader結構 5. 參數綁定 6. 著色器實現 7. 分配 work gr…

VueRouter

路由介紹 1.思考 單頁面應用程序,之所以開發效率高,性能好,用戶體驗好 最大的原因就是:頁面按需更新 比如當點擊【發現音樂】和【關注】時,只是更新下面部分內容,對于頭部是不更新的 要按需更新&#…

Git 基本使用命令

Git 基本使用命令 下面是一些常用的 Git 基本使用命令&#xff1a; 初始化一個新的 Git 倉庫&#xff1a; git init克隆&#xff08;Clone&#xff09;一個遠程倉庫到本地&#xff1a; git clone <repository_url>添加文件或目錄到暫存區&#xff08;Staging Area&am…

微信小程序前端環境搭建

搭建微信小程序前端環境 申請小程序測試賬號 訪問路徑 使用微信掃描二維碼進行申請&#xff0c;申請成功之后&#xff0c;進入界面&#xff0c;獲取小程序ID(AppID)和秘鑰(AppSecret) 安裝微信web開發者工具 訪問路徑 選擇穩定開發的版本 需要在小程序的設置中將默認關閉…

geoserver發布tif矢量數據圖層

cesium加載上傳至geoserver的tif矢量數據_cesium加載tiff-CSDN博客 geoserver安裝及跨域問題解決方案&#xff1a;geoserver安裝及跨域問題解決方案_geoserver 跨域_1 1王的博客-CSDN博客 將TIF上傳至geoserver 啟動geoserver服務&#xff0c;并進入geoserver主頁。 1. 新建…

【物聯網產品架構】如何構建物聯網產品路線圖

面對現實吧。建立物聯網產品路線圖難度要比為“正常”技術產品制定路線圖要困難得多。 這是因為IoT產品是復雜的系統。為了創建一個工作的解決方案&#xff0c;物聯網技術棧的所有層 - 設備硬件&#xff0c;設備軟件&#xff0c;通信&#xff0c;云平臺和云應用都需要一起工作。…

Spring Cloud五大組件

Spring Cloud五大組件 Spring Cloud是分布式微服務架構的一站式解決方案&#xff0c;在Spring Boot基礎上能夠輕松搭建微服務系統的架構。 現有Spring Cloud有兩代實現&#xff1a; 一代&#xff1a;Spring Cloud Netflix&#xff0c;主要由&#xff1a;Eureka、Ribbon、Feig…

【c語言】 邏輯運算符運算規則

1.&&邏輯運算符的坑 int x0&#xff0c;y0&#xff0c;z0; z (x1) && (y2); printf("%d"&#xff0c;y);//y0;今天遇到了同學問的問題&#xff0c;為什么y輸出為0. 我第一時間也記不得&#xff0c;工作中一般不會寫這種代碼&#xff0c;但是卻不能…

Vue3 狀態管理 - Pinia

1. 什么是Pinia Pinia 是 Vue 的專屬的最新狀態管理庫 &#xff0c;是 Vuex 狀態管理工具的替代品 提供更加簡單的APl&#xff08;去掉了mutation&#xff0c;Pinia 中對state數據的修改可以直接通過action&#xff0c;Vuex中則是通過mutation)提供符合組合式風格的API&#…

筆記轉移:https://www.yuque.com/u32968635/lbk

語雀&#xff1a;https://www.yuque.com/u32968635/lbk

視頻剪輯技巧:如何高效批量轉碼MP4視頻為MOV格式

在視頻剪輯的過程中&#xff0c;經常會遇到將MP4視頻轉碼為MOV格式的情況。這不僅可以更好地編輯視頻&#xff0c;還可以提升視頻的播放質量和兼容性。對于大量視頻文件的轉碼操作&#xff0c;如何高效地完成批量轉碼呢&#xff1f;現在一起來看看云炫AI智剪如何智能轉碼&#…