《MATLAB在自動(dòng)控制中的應(yīng)用》課件第2章_第1頁(yè)
《MATLAB在自動(dòng)控制中的應(yīng)用》課件第2章_第2頁(yè)
《MATLAB在自動(dòng)控制中的應(yīng)用》課件第2章_第3頁(yè)
《MATLAB在自動(dòng)控制中的應(yīng)用》課件第2章_第4頁(yè)
《MATLAB在自動(dòng)控制中的應(yīng)用》課件第2章_第5頁(yè)
已閱讀5頁(yè),還剩283頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第2章MATLAB基本使用方法及常用功能介紹2.1應(yīng)用基礎(chǔ)

2.2基本操作

2.3數(shù)值運(yùn)算2.4符號(hào)運(yùn)算2.5圖形表達(dá)功能2.6程序設(shè)計(jì)基礎(chǔ)

2.1應(yīng)

礎(chǔ)

2.1.1最簡(jiǎn)單的計(jì)算器使用方法

MATLAB的基本特性之一就是其演草紙式的數(shù)學(xué)運(yùn)算功能,用戶(hù)可以在命令窗口中隨心所欲地進(jìn)行各種數(shù)學(xué)演算,就如同在草稿紙上進(jìn)行算術(shù)運(yùn)算一樣方便。

【例2.1】求算術(shù)運(yùn)算[9×(10-1)+19]÷22的結(jié)果。

【解】(1)在MATLAB命令窗口中輸入:

>>(9*(10-1)+19)/2^2(2)在上述表達(dá)式輸入完成后,按“回車(chē)”鍵,該命令被執(zhí)行。(3)在命令執(zhí)行后,MATLAB命令窗口中將顯示下述結(jié)果:ans=

25說(shuō)明:①在全部輸入一個(gè)命令行內(nèi)容后,必須按下回車(chē)鍵,該命令才會(huì)被執(zhí)行。但注意,無(wú)需在命令行的末尾處執(zhí)行此操作,在一個(gè)命令行中的任一處均可執(zhí)行此項(xiàng)操作。

②命令行行首的符號(hào)“>>”是命令輸入提示符,如前所述,它由MATLAB自動(dòng)產(chǎn)生,用戶(hù)不必輸入。

③MATLAB的運(yùn)算符號(hào)(如+、-、*、/等)都是各種計(jì)算程序中常見(jiàn)的習(xí)慣符號(hào),且運(yùn)算符號(hào)均為西文字符,不能在中文狀態(tài)下輸入。

④本例計(jì)算結(jié)果顯示中的“ans”是英文“answer”的縮寫(xiě),其含義是“運(yùn)算答案”,它是MATLAB的一個(gè)默認(rèn)變量。⑤如果不顯示本例的計(jì)算結(jié)果,可以在命令行末尾添加分號(hào)“;”。對(duì)于以分號(hào)結(jié)尾的命令行語(yǔ)句,盡管該命令已執(zhí)行,但MATLAB不會(huì)把其運(yùn)算結(jié)果顯示在命令窗口中。通過(guò)上面的這個(gè)小例子,相信讀者已經(jīng)對(duì)MATLAB方便、快捷及靈活的數(shù)學(xué)運(yùn)算功能有了初步的體會(huì)。

2.1.2矩陣

1.矩陣的生成在MATLAB中,矩陣的生成有很多方法。既可以以矩陣格式輸入數(shù)據(jù),也可以用“l(fā)oad”命令調(diào)用已存儲(chǔ)的矩陣數(shù)據(jù)或矩陣變量,還可以應(yīng)用MATLAB提供的函數(shù)生成特殊矩陣。在MATLAB中輸入矩陣需要遵循以下基本規(guī)則:

(1)矩陣元素之間用空格或逗號(hào)“,”分隔,矩陣行之間用分號(hào)“;”隔離,整個(gè)矩陣放在方括號(hào)“[]”里,且標(biāo)點(diǎn)符號(hào)一定要在英文狀態(tài)下輸入。

(2)不必事先對(duì)矩陣維數(shù)做任何說(shuō)明,存儲(chǔ)時(shí)將自動(dòng)配置。

(3)

MATLAB區(qū)分字母的大小寫(xiě)。下例中的矩陣賦給了變量A,

而不是小寫(xiě)的a。

【例2.2】

以矩陣格式輸入數(shù)據(jù),自定義一個(gè)三階帕斯卡矩陣

【解】

在MATLAB命令窗口中輸入:

>>A=[1,1,1;1,2,3;1,3,6]運(yùn)行結(jié)果為:A=

111123136或在MATLAB命令窗口中輸入:

>>A=[111;123;136]運(yùn)行后會(huì)得到同樣的輸出結(jié)果。

說(shuō)明:例2.2中的命令被執(zhí)行后,矩陣A將被保存在MATLAB的工作空間中。如果用戶(hù)不用“clear”命令清除它或?qū)λ匦沦x值,那么該矩陣會(huì)一直保存在工作空間中,直到本次MATLAB命令窗口被關(guān)閉為止。進(jìn)一步地,A(i,j)表示矩陣A中第i行第j列元素;A(i,:)表示矩陣A中第i行全部元素;A(:,j)表示矩陣A中第j列全部元素。

【例2.3】取出例2.2中矩陣A的第2行。

【解】在MATLAB命令窗口中輸入:

>>A(2,:)運(yùn)行結(jié)果為:ans=

123顯見(jiàn),取出矩陣中的某行元素,若用計(jì)算機(jī)高級(jí)語(yǔ)言來(lái)實(shí)現(xiàn),或許要用到循環(huán)語(yǔ)句,而用MATLAB來(lái)實(shí)現(xiàn),卻是如此的簡(jiǎn)單。

MATLAB還有一個(gè)實(shí)用的操作,就是利用方括號(hào)“[]”將小矩陣合成一個(gè)大矩陣,請(qǐng)看下例。

【例2.4】將例2.2的矩陣A連接起來(lái),生成矩陣B?!窘狻吭贛ATLAB命令窗口中輸入:

>>B=[A,A+12;A+24,A+16]運(yùn)行結(jié)果為:B=11113131312313141513613151825252517171725262717181925

27

30

171922

2.特殊矩陣的生成

MATLAB中內(nèi)置了許多特殊的矩陣生成函數(shù),通過(guò)這些函數(shù),可以自動(dòng)生成一些具有某種特殊性質(zhì)的矩陣。

1)空矩陣空矩陣用方括號(hào)“[]”表示。空矩陣的大小為零,但變量名卻保存在工作空間內(nèi)。

2)單位矩陣單位矩陣使用函數(shù)eye()實(shí)現(xiàn),其調(diào)用格式如下:

eye(n)生成n×n維單位矩陣

eye(n,

m)

生成n×m維單位矩陣

【例2.5】生成4×4維單位矩陣。【解】在MATLAB命令窗口中輸入:

>>A=eye(4)運(yùn)行結(jié)果為:A=1000010000100

0

0

1

3)零矩陣零矩陣可用函數(shù)zero()實(shí)現(xiàn),其調(diào)用格式與函數(shù)eye()完全相同。

【例2.6】生成3×4維的零矩陣。

【解】在MATLAB命令窗口中輸入:>>zero(3,4)運(yùn)行結(jié)果為:ans=000000000

0

00

4)全部元素是1的矩陣全部元素為1的矩陣可用函數(shù)ones()實(shí)現(xiàn),其調(diào)用格式也與函數(shù)eye()完全相同。

5)對(duì)角矩陣的生成對(duì)角矩陣指對(duì)角線上的元素為任意數(shù),其他元素為零的矩陣。對(duì)角矩陣可使用函數(shù)diag()實(shí)現(xiàn)。格式:

diag(V)

diag(V,K)說(shuō)明:V為某個(gè)向量,K為向量V偏離主對(duì)角線的列數(shù)。K=0,V在主對(duì)角線上;K>0,V在主對(duì)角線以上;K<0,V在主對(duì)角線以下。

【例2.7】對(duì)角矩陣生成演示?!窘狻吭贛ATLAB命令窗口中輸入:>>v=[12345];>>diag(v)運(yùn)行結(jié)果為:ans=1000002000003000004000005>>diag(v,1)運(yùn)行結(jié)果為:ans=010000002000000300000040000005000000>>diag(v,-1)運(yùn)行結(jié)果為:ans=0000001000000200000030000

004000

000502.1.3MATLAB的基本要素

1.變量

MATLAB不要求用戶(hù)在輸入變量的時(shí)候進(jìn)行聲明,也不需要指定變量類(lèi)型,MATLAB會(huì)自動(dòng)依據(jù)所賦予變量的值或?qū)ψ兞克M(jìn)行的操作來(lái)識(shí)別變量的類(lèi)型。在賦值過(guò)程中,如果賦值變量已存在,MATLAB將使用新值代替舊值,并以新值類(lèi)型代替舊值類(lèi)型。

MATLAB變量的命名遵循如下規(guī)則:

(1)變量均先定義、后使用。

(2)變量名以英文字母開(kāi)頭。

(3)變量名可以由字母、數(shù)字和下劃線混合組成。

(4)對(duì)于6.5以上版本,變量名最多可包含63個(gè)字符。

(5)變量名中不得包含空格和標(biāo)點(diǎn),但可以包含下劃線。如“my-var-121”是合法的變量名,且讀起來(lái)更方便。而“my,var121”由于逗號(hào)的分隔,就不是一個(gè)合法的變量名。

(6)

MATLAB區(qū)分變量大小寫(xiě)。

如變量“myvar”和“MyVar”表示兩個(gè)不同的變量。

【例2.8】生成一個(gè)固定變量,其值為45。

【解】在MATLAB命令窗口中輸入:>>con-1=45運(yùn)行結(jié)果為:con-1=

45即:生成一個(gè)變量名為con-1且僅有一個(gè)元素(其值為45)的矩陣(固定變量)。

2.預(yù)定義變量

在MATLAB中存在一些固定變量(也稱(chēng)為常量),這就是MATLAB默認(rèn)的預(yù)定義變量,也稱(chēng)為默認(rèn)變量,如表2.1所示。每當(dāng)MATLAB啟動(dòng)時(shí),

這些變量就被產(chǎn)生。

表2.1MATLAB的預(yù)定義變量

【例2.9】

求2π之值?!窘狻吭贛ATLAB命令窗口中輸入:

>>2*pi運(yùn)行結(jié)果為:

ans=

6.2832說(shuō)明:在定義變量時(shí),應(yīng)避免與表2.1中的預(yù)定義變量名重復(fù),以免改變這些常量的值。如果已經(jīng)改變了某個(gè)常量的值,可以通過(guò)“clear+常量名”命令恢復(fù)該常量的初始設(shè)定值。

3.數(shù)值

在MATLAB中,數(shù)值的表示方法很多,既可以使用傳統(tǒng)的十進(jìn)制計(jì)數(shù)法表示一個(gè)數(shù)值,也可以使用科學(xué)計(jì)數(shù)法表示一個(gè)數(shù)值。下列描述都合法:

-990.017.3861.5e-104.5e333在MATLAB中,所有的數(shù)值均按IEEE浮點(diǎn)標(biāo)準(zhǔn)規(guī)定的長(zhǎng)型格式存儲(chǔ),數(shù)值的有效范圍為10-308~10308。

4.字符串

在MATLAB中,創(chuàng)建字符串的方法是:在MATLAB命令窗口中,先將待建的字符串放在一個(gè)“單引號(hào)對(duì)”中,再按“回車(chē)”鍵。且該“單引號(hào)對(duì)”必須在英文狀態(tài)下輸入,但字符串內(nèi)容可以為中文。

【例2.10】顯示字符串“WelcometoMATLAB!”和“歡迎使用MATLAB!”。

【解】在MATLAB命令窗口中輸入:

>>c=′WelcometoMATLAB!′%顯示字符"WelcometoMATLAB!"運(yùn)行結(jié)果為:

c=

WelcometoMATLAB!

>>′歡迎使用MATLAB′%顯示字符"歡迎使用MATLAB!"

運(yùn)行結(jié)果為:

ans=歡迎使用MATLAB說(shuō)明:

如前所述,

本例中以“%”開(kāi)頭,

直至本行末尾的語(yǔ)句為MATLAB的注釋語(yǔ)句。

5.運(yùn)算符

MATLAB的運(yùn)算符包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。

1)算術(shù)運(yùn)算符

MATLAB的算術(shù)運(yùn)算符如表2.2所示。

表2.2MATLAB的算術(shù)運(yùn)算符

【例2.11】

矩陣算術(shù)乘運(yùn)算演示?!窘狻吭贛ATLAB命令窗口中輸入:>>A=[1,2,3;4,5,6;7,8,9];>>B=[1,2,3;4,5,6;7,8,9];>>C=A*B%算術(shù)乘,按矩陣乘法規(guī)則進(jìn)行運(yùn)算

運(yùn)行結(jié)果為:C=303642668196102

126

150【例2.12】矩陣點(diǎn)乘運(yùn)算演示?!窘狻吭贛ATLAB命令窗口中輸入:>>A=[1,2,3;4,5,6;7,8,9];>>B=[1,2,3;4,5,6;7,8,9];>>D=A.*B%點(diǎn)乘,元素對(duì)元素做乘法運(yùn)行結(jié)果為:D=1

4916

25

36

49

64

812)關(guān)系運(yùn)算符MATLAB的關(guān)系運(yùn)算符如表2.3所示。

表2.3MATLAB的關(guān)系運(yùn)算符

3)邏輯運(yùn)算符MATLAB的邏輯運(yùn)算符如表2.4所示。

表2.4MATLAB的邏輯運(yùn)算符

6.標(biāo)點(diǎn)符在MATLAB中,一些標(biāo)點(diǎn)符號(hào)也被賦予了特殊的意義或表示要進(jìn)行一定的運(yùn)算等,如表2.5所示。注意,表中所有標(biāo)點(diǎn)符號(hào)均在西文狀態(tài)下輸入。

表2.5MATLAB的標(biāo)點(diǎn)符

1)冒號(hào)(:)在MATLAB中,冒號(hào)的作用最為豐富。冒號(hào)不僅可以定義行向量,還可以截取指定矩陣中的部分元素。下面舉例說(shuō)明。

【例2.13】用冒號(hào)定義增量為1的行向量。

【解】在MATLAB命令窗口中輸入:

>>a=2:8%產(chǎn)生增量默認(rèn)為1的行向量運(yùn)行結(jié)果為:

a=

2345678

【例2.14】用冒號(hào)定義增量為給定值的行向量。

【解】在MATLAB命令窗口中輸入:

>>a=0:10:80%產(chǎn)生增量為10的行向量運(yùn)行結(jié)果為:

a=

01020304050607080

【例2.15】用冒號(hào)截取指定矩陣中的部分元素。

【解】在MATLAB命令窗口中輸入:

>>A=[1,2,3;4,5,6;7,8,9];

>>B=A(1:2,:)%取出矩陣A的第1行和第2行運(yùn)行結(jié)果為:B=123456顯見(jiàn),

矩陣B由A的前兩行組成。

2)分號(hào)(;)分號(hào)在矩陣中用來(lái)分隔行,如果不希望某些運(yùn)算結(jié)果顯示在屏幕中,還可以用分號(hào)作為該行結(jié)束的標(biāo)志。對(duì)于以分號(hào)結(jié)尾的行語(yǔ)句,MATLAB不會(huì)把其運(yùn)算結(jié)果顯示在命令窗口中。

7.復(fù)數(shù)

MATLAB提供了復(fù)數(shù)的表達(dá)和運(yùn)算功能,復(fù)數(shù)的基本單位表示為i或j。復(fù)數(shù)的生成可以利用如下語(yǔ)句:

z=a+bi或

z=r*exp(θ*i)其中,r是復(fù)數(shù)的模,θ是復(fù)數(shù)幅角的弧度數(shù)。

下面列出的數(shù)值表示方法在MATLAB中都是合法的:145.1234536i-0.3456

4.3214e12

12e5i【例2.16】已知復(fù)數(shù)z1=3+i4,z2=1+i2,,計(jì)算【解】在MATLAB命令窗口中輸入:>>z1=3+4i;>>z2=1+2i;>>z3=2*exp(pi/6)*i;>>z=z1*z2/z3運(yùn)行結(jié)果為:

z=

0.3349+5.5801i2.2基

2.2.1命令窗口

圖2.1為脫離MATLAB桌面的幾何獨(dú)立命令窗口。獲得該窗口的方法是,用鼠標(biāo)左鍵單擊MATLAB命令窗口右上角的圖標(biāo)(見(jiàn)圖1.2)即可。若希望將幾何獨(dú)立命令窗口嵌放回MATLAB桌面,則只要用鼠標(biāo)左鍵單擊幾何獨(dú)立命令窗口右上角的圖標(biāo)即可。

2.1幾何獨(dú)立的命令窗口

1.命令窗口顯示及設(shè)置命令窗口顯示主要采用缺省顯示方式。MATLAB對(duì)該窗口內(nèi)的字符及數(shù)碼采用不同的顏色分類(lèi),這樣看起來(lái)十分醒目。在缺省顯示方式下,諸如for、while等關(guān)鍵詞采用藍(lán)色字體,輸入的指令、表達(dá)式以及計(jì)算結(jié)果等采用黑色字體,而字符串則采用赭紅色字體。此外,數(shù)值計(jì)算結(jié)果都以簡(jiǎn)潔的“短(Short)”格式顯示。

可以根據(jù)需要對(duì)命令窗口的字體風(fēng)格、大小、顏色及數(shù)值計(jì)算結(jié)果的顯示格式進(jìn)行設(shè)置,其步驟如下:

(1)選擇MATLAB桌面或命令窗口菜單“File|Preference”,即可打開(kāi)一個(gè)如圖2.2所示的參數(shù)設(shè)置對(duì)話框。

(2)選中此對(duì)話框左欄的“Fonts”、“Colors”及“CommandWindow”等項(xiàng),對(duì)話框的右邊就出現(xiàn)相應(yīng)的選擇內(nèi)容(圖2.2右部為選中“Fonts”項(xiàng)后的選擇內(nèi)容)。

(3)根據(jù)需要并通過(guò)對(duì)話框提示,對(duì)數(shù)據(jù)顯示格式、字體或數(shù)值計(jì)算結(jié)果的顯示格式等進(jìn)行設(shè)置。

(4)

用鼠標(biāo)左鍵單擊“OK”按鈕完成設(shè)置。

圖2.2命令窗口參數(shù)設(shè)置對(duì)話框

2.命令窗口的常用控制命令命令窗口的常用控制命令見(jiàn)表2.6。

表2.6命令窗口的常用控制命令

3.命令窗口中命令行的編輯

MATLAB不但允許在命令窗口中對(duì)輸入的命令行進(jìn)行各種編輯和運(yùn)行,而且也允許對(duì)過(guò)去已經(jīng)輸入的命令行進(jìn)行回調(diào)、編輯和重運(yùn)行,這些操作均可用計(jì)算機(jī)鍵盤(pán)上的常用操作鍵完成,

具體內(nèi)容見(jiàn)表2.7。

表2.7命令窗口命令行編輯的常用操作鍵及功能

說(shuō)明:命令窗口中輸入的所有命令都被記錄在MATLAB工作空間中專(zhuān)門(mén)開(kāi)辟的命令歷史空間中,只要不專(zhuān)門(mén)進(jìn)行刪除操作,它們將不會(huì)因?yàn)閷?duì)命令窗口進(jìn)行“清屏”操作(即運(yùn)行“clc”命令)而消失,也不會(huì)因?yàn)橛脩?hù)對(duì)工作空間進(jìn)行“清除工作空間變量”(即運(yùn)行“clear”命令)而消失。命令窗口中輸入過(guò)的所有命令都被顯示在命令歷史窗口中,以供隨時(shí)觀察和調(diào)用。

【例2.17】

計(jì)算

的值。

【解】首先計(jì)算x1的值。在MATLAB命令窗口中輸入:

>>x1=5*cos(0.1*pi)/(1+sqrt(2))運(yùn)行結(jié)果為:

x1=

1.9697計(jì)算x2的值,既可以采用計(jì)算x1的值的方法,通過(guò)鍵盤(pán)把相應(yīng)字符一個(gè)一個(gè)“輸入”,也可以應(yīng)用操作鍵,通過(guò)命令回調(diào)和編輯,進(jìn)行新的計(jì)算。后一種方法的操作過(guò)程如下:(1)用“↑”鍵調(diào)回已輸入過(guò)的命令:

>>x1=5*cos(0.1*pi)/(1+sqrt(2))(2)移動(dòng)光標(biāo),把x1改成x2,把cos改成sin,得到:

>>x2=5*sin(0.1*pi)/(1+sqrt(2))(3)按“回車(chē)”鍵,即可得到計(jì)算結(jié)果:

x2=

0.64002.2.2命令歷史窗口幾何獨(dú)立的命令歷史窗口如圖2.3所示。該窗口記錄著用戶(hù)在MATLAB命令窗口中所輸入過(guò)的所有命令行。歷史記錄包括:每次開(kāi)啟MATLAB的時(shí)間及每次開(kāi)啟MATLAB后在命令窗口中運(yùn)行過(guò)的所有命令行。同時(shí),命令歷史窗口不但能清楚地顯示命令窗口中運(yùn)行過(guò)的所有命令行,而且所有這些被記錄的命令行都能被復(fù)制或送到命令窗口中再運(yùn)行。

圖2.3幾何獨(dú)立的命令歷史窗口

表2.8命令歷史窗口的主要應(yīng)用功能及操作方法2.2.3當(dāng)前目錄瀏覽器

幾何獨(dú)立的當(dāng)前目錄瀏覽器如圖2.4所示。該圖展示的是最完整的當(dāng)前目錄瀏覽器界面,它的組件自上而下有:菜單條、當(dāng)前目錄設(shè)置區(qū)與工具欄、文件詳細(xì)列表區(qū)、M文件或MAT文件描述區(qū)(缺省情況下沒(méi)有此描述區(qū))等。

圖2.4幾何獨(dú)立的當(dāng)前目錄瀏覽器

表2.9文件詳細(xì)列表區(qū)的主要應(yīng)用功能及操作方法

2.2.4工作空間瀏覽器幾何獨(dú)立的工作空間瀏覽器如圖2.5所示。在MATLAB中,工作空間是一個(gè)重要的概念,它是指運(yùn)行MATLAB的程序或命令時(shí)生成的所有變量與MATLAB提供的常量構(gòu)成的空間,也稱(chēng)為內(nèi)存空間(簡(jiǎn)稱(chēng)內(nèi)存)。一旦MATLAB啟動(dòng),就會(huì)自動(dòng)建立一個(gè)工作空間,該工作空間在MATLAB運(yùn)行期間一直存在,關(guān)閉MATLAB后自動(dòng)消失。當(dāng)運(yùn)行MATLAB程序時(shí),程序中的變量將被加入到工作空間中,只有特定的命令才可刪除某一變量,否則該變量在關(guān)閉MATLAB之前一直存在。由此可見(jiàn),一個(gè)程序中的運(yùn)算結(jié)果以變量的形式保存在工作空間后,在MATLAB關(guān)閉之前,該變量還可被別的程序調(diào)用。

圖2.5幾何獨(dú)立的工作空間瀏覽器

表2.10工作空間瀏覽器的主要應(yīng)用功能及操作方法

2.2.5數(shù)組編輯器數(shù)組編輯器是MATLAB工作空間瀏覽器中的一個(gè)組件,用于生成數(shù)組、觀察數(shù)組內(nèi)容以及編輯其值??刹捎靡韵氯N方法中的任一種打開(kāi)數(shù)組編輯器:方法一:選中工作空間瀏覽器中的任意一維或二維數(shù)值數(shù)組,再用鼠標(biāo)左鍵雙擊所選數(shù)組;方法二:用鼠標(biāo)左鍵單擊工作空間瀏覽器的工具欄圖標(biāo);方法三:

選擇工作空間瀏覽器的現(xiàn)場(chǎng)菜單項(xiàng)“OpenSelection”。

圖2.6幾何獨(dú)立的數(shù)組編輯器交互界面

通常,在命令窗口中輸入較大規(guī)模數(shù)組的操作方法顯得很笨拙。此時(shí),應(yīng)采用數(shù)組編輯器完成,具體操作方法如下:

(1)在命令窗口中向一個(gè)新變量賦“空”矩陣,即方括號(hào)[]。

(2)在工作空間瀏覽器中用鼠標(biāo)左鍵雙擊該變量,打開(kāi)數(shù)組編輯器。

(3)

逐格填寫(xiě)數(shù)組元素值,直到完成為止。

2.2.6數(shù)據(jù)文件的存取

1.數(shù)據(jù)文件的保存

數(shù)據(jù)文件的保存使用“save”命令。該命令將工作空間變量保存為一定格式的數(shù)據(jù)文件,具體格式如下:saveFileName將全部變量保存為當(dāng)前目錄下的FileName.mat文件saveFileNamev1v2將變量v1,v2保存為FileName.mat文件saveFileNamev1v2-append將變量v1,v2添加到已有的FileName.mat文件中saveFileNamev1v2-ascii將變量v1,v2保存為FileName8位ASCII文件saveFileNamev1v2-ascii-double將變量vl,v2保存為FileName16位ASCII文件

2.數(shù)據(jù)文件的調(diào)入數(shù)據(jù)文件的調(diào)入使用“l(fā)oad”命令。該命令將一定格式的數(shù)據(jù)文件中的變量裝入工作空間,具體命令如下:loadFileName將FileName.mat文件中的全部變量裝入工作空間loadFileNamev1v2將FileName.mat文件中的v1,v2變量裝入工作空間loadFileNamev1v2-ascii將FileNameASCII文件中的v1,v2變量裝入工作空間

說(shuō)明:①FileName為文件名。文件名可以包含路徑,例如e:/user/my,但可以不包含擴(kuò)展名。如果文件名不包含路徑,則該文件即在MATLAB的當(dāng)前路徑中。缺省情況下,F(xiàn)ileName為二進(jìn)制文件。②v1,v2為變量名。變量名與變量名之間必須以空格相分隔。指定的變量個(gè)數(shù)不限,只要工作空間或文件中存在即可。③-ascii選項(xiàng)使數(shù)據(jù)以ASCII格式處理。不包含擴(kuò)展名的ASCII文件可以在任何文字處理器中被修改。如果數(shù)據(jù)較多的變量需要進(jìn)行修改,則很適合使用ASCII格式的數(shù)據(jù)文件。④如果命令后沒(méi)有-ascii選項(xiàng),那么數(shù)據(jù)以二進(jìn)制格式處理,生成的數(shù)據(jù)文件一定包含mat擴(kuò)展名。

【例2.18】數(shù)據(jù)文件存取演示。【解】在MATLAB命令窗口中輸入:>>A=[12;34];%輸入矩陣A>>B=[56;78];%輸入矩陣B>>savee:\user\myAB%將變量A,B保存為my.mat文件,該文件所在路徑為e:\user\>>savemy1ABascii%將變量A,B保存為ASCII文件%my1,該文件所在路徑為當(dāng)前路徑>>loade:\user\my%將e:\user\my.mat文件中的全部變量裝入內(nèi)存

圖2.7例2.18的ASCII數(shù)據(jù)文件

2.3數(shù)

運(yùn)

2.3.1向量及其運(yùn)算

1.向量的生成

1)在命令窗口中直接生成向量在MATLAB中,生成向量最簡(jiǎn)單的方法就是在命令窗口中按一定格式直接輸入,且遵循與矩陣輸入基本相同的規(guī)則,即向量元素用方括號(hào)“[]”括起來(lái),行向量元素之間用空格或逗號(hào)相隔,

列向量元素之間用分號(hào)相隔。

【例2.19】命令窗口直接生成向量演示。【解】在MATLAB命令窗口中輸入:

>>X1=[12345]運(yùn)行結(jié)果為:X1=12345>>X2=[1,2,3,4,5]運(yùn)行結(jié)果為:X2=12345>>X3=[1;

2;

3;

4;

5]′%求列向量的轉(zhuǎn)置

運(yùn)行結(jié)果為:X3=

12345說(shuō)明:MATLAB生成向量(或矩陣)轉(zhuǎn)置的符號(hào)為右單引號(hào)“′”,而不是一般線性代數(shù)教材中的上標(biāo)“T”。

2)等差元素向量的生成若向量的元素過(guò)多,且向量各元素有等差規(guī)律,則可采用冒號(hào)生成法或使用linspace()函數(shù)生成向量。(1)冒號(hào)生成法?;靖袷綖椋篤=a:n:b。其中,V為生成的向量,a為向量V的第一個(gè)元素,b為向量V的最后一個(gè)元素;n為步長(zhǎng),缺省設(shè)置為1,且n=1時(shí)可忽略。(2)使用linspace()函數(shù)。格式:

X=linspace(a,b,n)說(shuō)明:生成元素在[a,b]之間的線性等分行向量,向量元素個(gè)數(shù)為n,n的缺省值為100。

【例2.20】

等差元素向量生成演示?!窘狻吭贛ATLAB命令窗口中輸入:

>>X1=1:2:9運(yùn)行結(jié)果為:X1=

13579>>X2=linspace(10,-2,5)運(yùn)行結(jié)果為:X2=

10

7

4

1

-2

2.向量的基本運(yùn)算

1)向量與常數(shù)的四則運(yùn)算向量與常數(shù)的四則運(yùn)算是指向量中的每個(gè)元素與常數(shù)進(jìn)行的加、減、乘、除等運(yùn)算,運(yùn)算符號(hào)分別為“+”、“-”、“*”及“/”。注意,當(dāng)進(jìn)行除法運(yùn)算時(shí),向量只能作為被除數(shù)。

2)向量與向量之間的加、減運(yùn)算向量與向量之間的加、減運(yùn)算是指向量中的每個(gè)元素與另一個(gè)向量中相對(duì)應(yīng)元素的加、減運(yùn)算,運(yùn)算符號(hào)為“+”和“-”。

3)向量的點(diǎn)積和叉積運(yùn)算根據(jù)數(shù)學(xué)知識(shí)可知,向量的點(diǎn)積等于其中一個(gè)向量的模與另一個(gè)向量的模在這個(gè)向量方向上投影的乘積。向量叉積的幾何意義是指過(guò)兩個(gè)相交向量的交點(diǎn)并與兩向量所在平面垂直的向量,且向量維數(shù)只能為3。在MATLAB中,使用函數(shù)dot()與cross()分別計(jì)算向量的點(diǎn)積與叉積。

【例2.21】

向量的點(diǎn)積與叉積運(yùn)算演示?!窘狻吭贛ATLAB命令窗口中輸入:>>A=[102030];>>B=[405060];>>C=dot(A,B)算向量A與B的點(diǎn)積運(yùn)行結(jié)果為:C=

3200>>C=cross(A,B)%計(jì)算向量A與B的叉積運(yùn)行結(jié)果為:C=

-300600-3002.3.2數(shù)組及其運(yùn)算

1.數(shù)組的概念數(shù)組是一組實(shí)數(shù)或復(fù)數(shù)排成的長(zhǎng)方陣列。單維數(shù)組通常是指單行或單列的矩陣,即行向量或列向量。而多維數(shù)組則可以認(rèn)為是矩陣在維數(shù)上的擴(kuò)張,實(shí)際上也是矩陣中的一種特例。例如,從數(shù)據(jù)結(jié)構(gòu)上看,二維數(shù)組和數(shù)學(xué)中的矩陣沒(méi)有區(qū)別。在MATLAB中,數(shù)組和矩陣的運(yùn)算有較大的區(qū)別。因?yàn)?,矩陣作為一種變換或映射算子的體現(xiàn),其運(yùn)算有著明確而嚴(yán)格的數(shù)學(xué)規(guī)則。而MATLAB中的數(shù)組運(yùn)算是MATLAB所定義的規(guī)則,其目的是為了數(shù)據(jù)管理方便、操作簡(jiǎn)單、命令形式自然以及執(zhí)行計(jì)算的有效。

2.數(shù)組的基本數(shù)值運(yùn)算

1)數(shù)組與常數(shù)的四則運(yùn)算數(shù)組與常數(shù)的四則運(yùn)算是指數(shù)組中的每個(gè)元素與數(shù)進(jìn)行加、減、乘、除運(yùn)算,運(yùn)算符號(hào)分別為“+”、“-”、“*”及“/”。單維數(shù)組與常數(shù)的運(yùn)算與向量與數(shù)的運(yùn)算完全相同。

【例2.22】數(shù)組與常數(shù)的四則運(yùn)算演示?!窘狻吭贛ATLAB命令窗口中輸入:>>A=[1,2,3;2,3,4;3,4,5];>>B=[1,2,3;4,5,6;7,8,9];>>s=5;>>C=s*A-B/s+10運(yùn)行結(jié)果為:C=14.800019.600024.400019.200024.000028.800023.6000

28.400033.2000

2)數(shù)組間的四則運(yùn)算在MATLAB中,數(shù)組間的四則運(yùn)算按元素與元素的方式進(jìn)行。其中,數(shù)組之間的加法、減法運(yùn)算與矩陣的加法、減法運(yùn)算完全相同,運(yùn)算符號(hào)為“+”、“-”;數(shù)組間的相乘、相除運(yùn)算符號(hào)為“.*”、“./”或“.\”。

【例2.23】數(shù)組相乘運(yùn)算演示?!窘狻吭贛ATLAB命令窗口中輸入:>>A=[1,3,5;2,4,6;3,5,7];>>B=[2,4,6;1,3,5;3,5,7];>>C=A.*B運(yùn)行結(jié)果為:C=21230212309

2549【例2.24】

數(shù)組相除運(yùn)算演示?!窘狻吭贛ATLAB命令窗口中輸入:>>A=[1,3,5;2,4,6;3,5,7];>>B=[2,4,6;1,3,5;3,5,7];>>C=A\.B%點(diǎn)左除運(yùn)行結(jié)果為:C=2.00001.33331.20000.50000.75000.83331.00001.00001.0000>>C=A./B%點(diǎn)右除

運(yùn)行結(jié)果為:C=0.50000.75000.83332.00001.33331.20001.00001.00001.0000顯見(jiàn),

由于數(shù)組點(diǎn)左除與點(diǎn)右除含義不同,

因而運(yùn)算結(jié)果不相同。

3)數(shù)組的乘方運(yùn)算在MATLAB中,數(shù)組的乘方運(yùn)算(即冪運(yùn)算)符號(hào)為“.^”,按元素對(duì)元素的冪運(yùn)算進(jìn)行,

這與矩陣的冪運(yùn)算完全不同。

【例2.25】數(shù)組的乘方運(yùn)算演示?!窘狻吭贛ATLAB命令窗口中輸入:>>A=[1,3,5;2,4,6;3,5,7];>>C=A.^2運(yùn)行結(jié)果為:C=1925416369

2549

說(shuō)明:①數(shù)組“乘、除”及“乘方”運(yùn)算符前的小黑點(diǎn)絕不能遺漏,否則將不按照數(shù)組運(yùn)算規(guī)則進(jìn)行運(yùn)算。②在執(zhí)行數(shù)組與數(shù)組之間的運(yùn)算時(shí),參與運(yùn)算的數(shù)組必須維數(shù)相同,運(yùn)算結(jié)果所得數(shù)組也總與原數(shù)組維數(shù)相同。

3.元胞數(shù)組(CellArray)

元胞數(shù)組是MATLAB中一種特殊的數(shù)組,它的基本元素是元胞(Cell),每個(gè)元胞本身在數(shù)組中是平等的,它們只能以下標(biāo)區(qū)分。元胞可以存放任何類(lèi)型、任何大小的數(shù)組,包括任意維數(shù)值數(shù)組、字符串?dāng)?shù)組以及符號(hào)對(duì)象等,并且同一個(gè)元胞數(shù)組中各元胞中的內(nèi)容可以不同。此外,同數(shù)值數(shù)組一樣,元胞數(shù)組維數(shù)不受限制,可以是一維、二維或更高維。在MATLAB中,元胞數(shù)組必須使用花括號(hào)“{}”,這也是元胞數(shù)組與一般數(shù)組(或矩陣)的區(qū)別。例如,元胞數(shù)組A的第i行、第j列的元胞(元素)可表示為A{i,j}。生成元胞數(shù)組有兩種方法。

1)使用函數(shù)cell()生成元胞數(shù)組格式:c=cell(n)生成n×n維空元胞數(shù)組

c=cell(m,n)生成m×n維空元胞數(shù)組

c=cell(m,n,p,…)生成m×n×p×…維空元胞數(shù)組

c=cell(size(A))生成與A維數(shù)組相同的空元胞數(shù)組,A為數(shù)值數(shù)組或元胞數(shù)組

【例2.26】使用函數(shù)cell()生成一個(gè)2×2維元胞數(shù)組。

【解】在MATLAB命令窗口中輸入:

>>A=ones(3,4)%生成3×4維全部元素為1的數(shù)值矩陣運(yùn)行結(jié)果為:A=111111111

111

>>C=cell({A,[1,2];′cell′,[1;2]})%使用cell()函數(shù)生成元胞數(shù)組C運(yùn)行結(jié)果為:

C=[3x4double][1x2double]

′cell′[2x1double]

>>C(:,1)%顯示元胞數(shù)組C的第1列內(nèi)容運(yùn)行結(jié)果為:ans=[3x4double]

′cell′

2)使用花括號(hào)“{}”生成元胞數(shù)組

【例2.27】直接使用花括號(hào)“{}”生成例2.26的元胞數(shù)組?!窘狻吭贛ATLAB命令窗口中輸入:

>>A=ones(3,4);

>>C={A,[1,2];′cell′,[1;2]}運(yùn)行結(jié)果為:

C=[3x4double][1x2double]′cell′[2x1double]顯見(jiàn),

運(yùn)行結(jié)果與例2.26完全相同。

建議讀者優(yōu)先采用第二種方法生成元胞數(shù)組。

2.3.3基本數(shù)學(xué)函數(shù)運(yùn)算

MATLAB之所以被稱(chēng)為是演草紙式的科學(xué)計(jì)算語(yǔ)言,是因?yàn)樵谄涔ぷ骺臻g中可以方便地進(jìn)行針對(duì)數(shù)組(或標(biāo)量)的各種基本數(shù)學(xué)函數(shù)運(yùn)算。MATLAB的基本數(shù)學(xué)函數(shù)見(jiàn)表2.11~2.15。

表2.11三角函數(shù)和雙曲函數(shù)

表2.12指數(shù)與對(duì)數(shù)函數(shù)

表2.14坐標(biāo)變換函數(shù)

說(shuō)明:①表2.11~2.15中所列函數(shù)既滿(mǎn)足數(shù)組運(yùn)算規(guī)則,也滿(mǎn)足標(biāo)量運(yùn)算規(guī)則,因此,可以在MATLAB工作空間中隨心所欲地進(jìn)行針對(duì)數(shù)組(或標(biāo)量)的各種基本函數(shù)的運(yùn)算,尤其是針對(duì)標(biāo)量的各種基本函數(shù)的運(yùn)算,就如同使用一個(gè)功能強(qiáng)大的計(jì)算器一樣方便。②表2.11中三角函數(shù)運(yùn)算的角度單位均為弧度。③

表2.11~2.15中各函數(shù)的使用格式,可參見(jiàn)MATLAB命令行幫助或聯(lián)機(jī)幫助。

【例2.28】求tan45°的函數(shù)值。

【解】由于三角函數(shù)運(yùn)算的角度單位是弧度,因此應(yīng)先將單位由度轉(zhuǎn)化為弧度再計(jì)算。在MATLAB命令窗口中輸入:

>>tan(pi/4)運(yùn)行結(jié)果為: ans=

1.0000【例2.29】求復(fù)數(shù)z=5+i5的模和相角?!窘狻吭贛ATLAB命令窗口中輸入:>>z=5+5i;>>Am=abs(z)%計(jì)算復(fù)數(shù)z的模運(yùn)行結(jié)果為:Am=

7.0711>>Fm=angle(z)%計(jì)算復(fù)數(shù)z的相角運(yùn)行結(jié)果為:Fm=

0.7854即:|z|=|5+i5|=7.0711,∠z=∠(5+i5)=0.7854(rad)=45°。

2.3.4矩陣的函數(shù)運(yùn)算

2.1.2節(jié)已經(jīng)介紹了矩陣與特殊矩陣的生成等內(nèi)容?,F(xiàn)代控制理論中應(yīng)用最多的數(shù)學(xué)運(yùn)算就是矩陣運(yùn)算,它包括矩陣特征值運(yùn)算與矩陣函數(shù)運(yùn)算。其中,矩陣的基本數(shù)值運(yùn)算與數(shù)組的基本數(shù)值運(yùn)算基本相同,惟一不同的是,矩陣之間進(jìn)行“乘、除”及“乘方”運(yùn)算的運(yùn)算符沒(méi)有小黑點(diǎn),即為“*”、“/”(或“\”)及“^”。鑒于此,本章對(duì)矩陣的基本數(shù)值運(yùn)算就不作專(zhuān)門(mén)介紹了,而只著重介紹矩陣的函數(shù)運(yùn)算。矩陣的函數(shù)運(yùn)算是指對(duì)矩陣自身進(jìn)行一些特有的運(yùn)算,例如矩陣的行列式運(yùn)算、特征值運(yùn)算、求逆運(yùn)算、秩運(yùn)算等。

MATLAB提供了進(jìn)行這一類(lèi)運(yùn)算的函數(shù),

如表2.16所示。

表2.16實(shí)現(xiàn)矩陣特有運(yùn)算的函數(shù)

1.矩陣的轉(zhuǎn)置、逆運(yùn)算與行列式運(yùn)算

盡管矩陣的轉(zhuǎn)置運(yùn)算不屬于矩陣函數(shù)運(yùn)算之列,但這里都一并給予介紹。與向量轉(zhuǎn)置一樣,矩陣的轉(zhuǎn)置也用符號(hào)“′”表示。

【例2.30】求矩陣的轉(zhuǎn)置演示?!窘狻吭贛ATLAB命令窗口中輸入:>>A=[123;456;789];>>C=A′運(yùn)行結(jié)果為:C=1472583

6

9【例2.31】矩陣求逆演示?!窘狻吭贛ATLAB命令窗口中輸入:>>A=[120;25-1;410-1];>>B=inv(A)運(yùn)行結(jié)果為:B=

52-2-2-110-21在MATLAB中,

求矩陣的行列式可用函數(shù)det()來(lái)實(shí)現(xiàn)。

【例2.32】求矩陣的行列式演示?!纠吭贛ATLAB命令窗口中輸入:>>A=[120;25-1;410-1];>>B=det(A)運(yùn)行結(jié)果為:B=

1

2.矩陣的特征值運(yùn)算在線性代數(shù)中,矩陣特征值的計(jì)算過(guò)程相當(dāng)麻煩,而在MATLAB中,只需使用函數(shù)eig()即可完成。格式:d=eig(A)

D=eig(A)[V,D]=eig(A)說(shuō)明:d為矩陣A的特征值向量;V、D分別為矩陣A的特征向量矩陣與特征值矩陣。

【例2.33】求矩陣 的特征值向量、

特征向量矩陣和特征值矩陣。

【解】在MATLAB命令窗口中輸入:>>A=[120;25-1;410-1];>>d=eig(A)%求矩陣A的特征值向量運(yùn)行結(jié)果為:d=3.73210.26791.0000>>[B,

C]=eig(A)%求矩陣A的特征向量矩陣和特征值矩陣

運(yùn)行結(jié)果為:B=-0.2440-0.91070.4472-0.33330.33330.0000-0.9107-0.24400.8944C=3.73210000.267900

0

1.0000即:矩陣A的特征值向量為[3.73210.26791];矩陣A的特征向量矩陣B和特征值矩陣C分別為

3.矩陣的秩運(yùn)算

線性代數(shù)中,矩陣秩的計(jì)算非常繁雜,但在MATLAB中,只需使用函數(shù)rank()就可求得。

【例2.34】矩陣求秩演示。

【解】在MATLAB命令窗口中輸入:

>>A=[120;25-1;410-1];

>>B=rank(A)運(yùn)行結(jié)果為:

B=

32.3.5多項(xiàng)式及其運(yùn)算在控制系統(tǒng)的分析與設(shè)計(jì)中,常常需要求出控制系統(tǒng)的特征根或傳遞函數(shù)的零、極點(diǎn),這些都與多項(xiàng)式及其運(yùn)算有關(guān)。

1.多項(xiàng)式的表達(dá)及其構(gòu)造代數(shù)運(yùn)算中,

多項(xiàng)式一般可表示為如下形式:P(x)=a0xn+a1xn-1+a2xn-2+…+an-1x+an

(2.1)對(duì)于式(2.1),很容易將其系數(shù)按降冪次序存放在如下的行向量中:P=[a0,a1,a2,…,an-1,an]

【例2.35】用MATLAB構(gòu)造多項(xiàng)式P(x)=2x5+5x4+4x2+x+4。

【解】在MATLAB命令窗口中輸入:>>P=[250414];>>poly2sym(P)運(yùn)行結(jié)果為:ans=

2*x^5+5*x^4+4*x^2+x+4說(shuō)明:函數(shù)poly2sym()是MATLAB符號(hào)數(shù)學(xué)工具箱(見(jiàn)2.4節(jié))中的函數(shù)。要注意的是,用上述方法構(gòu)造多項(xiàng)式時(shí),無(wú)論多項(xiàng)式的系數(shù)是否為零,

都必須寫(xiě)完整。

2.多項(xiàng)式運(yùn)算函數(shù)

表2.17多項(xiàng)式運(yùn)算函數(shù)

3.多項(xiàng)式運(yùn)算舉例

1)代數(shù)方程求根

【例2.36】求方程x5+2x4+24x3+48x2-25x-50=0的根。

【解】在MATLAB命令窗口中輸入:

>>P=[122448-25-50];

>>r=roots(P)運(yùn)行結(jié)果為:r=

0.0000+5.0000i0.0000-5.0000i1.0000-2.0000-1.00002)用多項(xiàng)式的根構(gòu)造多項(xiàng)式

【例2.37】用多項(xiàng)式的根構(gòu)造多項(xiàng)式P(x)=x5+2.5x4+2x2+0.5x+2。

【解】在MATLAB命令窗口中輸入:>>P=[12.5020.52];>>r=roots(P)%求多項(xiàng)式的根

運(yùn)行結(jié)果為:r=-2.77090.5611+0.7840i0.5611-0.7840i-0.4257+0.7716i-0.4257-0.7716i>>poly(r)%用多項(xiàng)式的根構(gòu)造多項(xiàng)式運(yùn)行結(jié)果為:ans=

1.00002.5000-0.00002.00000.50002.0000

顯見(jiàn),運(yùn)行結(jié)果為多項(xiàng)式P(x)=x5+2.5x4+2x2+0.5x+2按降冪次序排列的系數(shù)向量。說(shuō)明:當(dāng)用多項(xiàng)式的根生成多項(xiàng)式時(shí),如果某些根有虛部(由于截?cái)嗾`差的存在,用函數(shù)poly()生成的多項(xiàng)式可能有一些小的虛部),則可以通過(guò)使用函數(shù)real()抽取實(shí)部來(lái)消除。

3)求矩陣的特征多項(xiàng)式

MATLAB中的函數(shù)poly()也可以用來(lái)計(jì)算矩陣特征多項(xiàng)式的系數(shù)。

【例2.38】求矩陣的特征多項(xiàng)式。

【解】在MATLAB命令窗口中輸入:>>A=[1.2,3,-0.9;5,1.75,6;9,0,1];>>poly(A)運(yùn)行結(jié)果為:ans=

1.0000-3.9500-1.8500-163.2750即:矩陣A的特征多項(xiàng)式為

f(s)=s3-3.95s2-1.85s-163.275

4)多項(xiàng)式卷積(乘法)與多項(xiàng)式解卷(除法)

【例2.39】已知多項(xiàng)式p(x)=x

3+2x

2+3x+4和q(x)=10x+20x+30,求兩個(gè)多項(xiàng)式的卷積p(x)*q(x),并用多項(xiàng)式解卷驗(yàn)證。

【解】(1)求兩個(gè)多項(xiàng)式的卷積。在MATLAB命令窗口中輸入:>>p=[1234];>>q=[102030];>>c=conv(p,q)運(yùn)行結(jié)果為:

c=

1040100160170120即:兩個(gè)多項(xiàng)式的卷積為c(x)=p(x)*q(x)=10x5+40x4+100x3+160x2+170x+120(2)用多項(xiàng)式解卷驗(yàn)證。在MATLAB命令窗口中輸入:

>>[s,r]=deconv(c,p)運(yùn)行結(jié)果為:s=

102030r=

000000說(shuō)明:①本例運(yùn)行結(jié)果中的s是向量c除以向量p所得的結(jié)果,r為余數(shù)。②由本例可見(jiàn),多項(xiàng)式卷積函數(shù)conv()與解卷函數(shù)deconv()互為逆運(yùn)算。③

用MATLAB建立控制系統(tǒng)的傳遞函數(shù)模型時(shí),

會(huì)經(jīng)常使用函數(shù)conv()。

5)分式多項(xiàng)式的部分分式展開(kāi)在應(yīng)用時(shí)域分析法分析控制系統(tǒng)動(dòng)態(tài)性能時(shí),常常需要求出系統(tǒng)在典型輸入信號(hào)作用下的時(shí)間響應(yīng)c(t),為此,必須首先求出c(t)的象函數(shù)C(s),并將其展開(kāi)成部分分式。這項(xiàng)計(jì)算盡管不難,但卻很繁瑣。而使用分式多項(xiàng)式的部分分式展開(kāi)函數(shù)residue(),可以輕松地解決這個(gè)問(wèn)題。【例2.40】已知控制系統(tǒng)的輸出象函數(shù),將其展開(kāi)為部分分式。

【解】在MATLAB命令窗口中輸入:>>num=[28];>>den=[1560];>>[z,p,k]=residue(num,den)運(yùn)行結(jié)果為:z=0.6667-2.00001.3333p=-3.0000-2.00000k= []

由運(yùn)行結(jié)果可得到C(s)的部分分式展開(kāi)式為

6)多項(xiàng)式曲線擬合進(jìn)行控制系統(tǒng)設(shè)計(jì)與仿真時(shí),常常需要采用曲線擬合方法。所謂曲線擬合,就是要尋找一條光滑曲線,使其在某種準(zhǔn)則下能最佳地?cái)M合已知數(shù)據(jù)。在MATLAB中,使用函數(shù)polyfit()對(duì)已知數(shù)據(jù)進(jìn)行曲線擬合,擬合方法采用最小二乘法(即最小誤差平方和準(zhǔn)則)。

【例2.41】曲線擬合的實(shí)例?!窘狻吭贛ATLAB命令窗口中輸入:>>x=0:0.1:1;%生成用行向量表示的自變量數(shù)據(jù)>>y=[-.4471.9783.286.167.087.347.669.569.489.3011.2];>>p=polyfit(x,y,2)%計(jì)算二階擬合多項(xiàng)式系數(shù)運(yùn)行結(jié)果為:p=

-9.810820.1293-0.03172.4符

號(hào)

運(yùn)

2.4.1符號(hào)對(duì)象的創(chuàng)建和使用在MATLAB的數(shù)值計(jì)算中,數(shù)值表達(dá)式所引用的變量必須事先被賦值,否則無(wú)法計(jì)算。因此,前面介紹的有關(guān)數(shù)值運(yùn)算,其運(yùn)算變量都是被賦值的數(shù)值變量。而在MATLAB的符號(hào)運(yùn)算中,運(yùn)算變量則是符號(hào)變量,所出現(xiàn)的數(shù)字也作為符號(hào)來(lái)處理。實(shí)際上,符號(hào)數(shù)學(xué)是對(duì)字符串進(jìn)行的運(yùn)算。進(jìn)行符號(hào)運(yùn)算時(shí),首先要?jiǎng)?chuàng)建(即定義)基本的符號(hào)對(duì)象,它可以是常數(shù)、變量和表達(dá)式。然后利用這些基本符號(hào)對(duì)象構(gòu)成新的表達(dá)式,進(jìn)而完成所需的符號(hào)運(yùn)算。

符號(hào)對(duì)象的創(chuàng)建使用函數(shù)sym()和syms()來(lái)完成,它們的調(diào)用格式如下:

S=sym(A)將數(shù)值A(chǔ)轉(zhuǎn)換成符號(hào)對(duì)象S,A是數(shù)字(值)或數(shù)值矩陣或數(shù)值表達(dá)式

S=sym(′x′)將字符串x轉(zhuǎn)換成符號(hào)對(duì)象S

S=sym(A,flag)將數(shù)值A(chǔ)轉(zhuǎn)換成flag格式的符號(hào)對(duì)象

symsarg1arg2…arg1=sym(′arg1′),arg2=sym(′arg2′),…

的簡(jiǎn)潔形式

【例2.42】創(chuàng)建符號(hào)變量和符號(hào)表達(dá)式演示。

【解】在MATLAB命令窗口中輸入:

>>y=sym(′x′);%定義變量y,它代表字符x運(yùn)行結(jié)果為:

y=

x

>>f=sym(′x^3+x^2+4*x+4′)%定義變量f,它代表符號(hào)表達(dá)式x3+x2+4x+4運(yùn)行結(jié)果為:f=

x^3+x^2+4*x+4

【例2.43】字符表達(dá)式轉(zhuǎn)換為符號(hào)變量演示。

【解】在MATLAB命令窗口中輸入:

>>y=sym(′2*sin(x)*cos(x)′)%將字符表達(dá)式轉(zhuǎn)換為符號(hào)變量運(yùn)行結(jié)果為:y=

2*sin(x)*cos(x)>>y=simple(y)%將已有的y符號(hào)表達(dá)式化成最簡(jiǎn)形式運(yùn)行結(jié)果為:y=

sin(2*x)

【例2.44】應(yīng)用符號(hào)運(yùn)算驗(yàn)證三角等式sinφ1cosφ2-cosφ1sinφ2=sin(φ1-φ2)。

【解】在MATLAB命令窗口中輸入:

>>symsfai1fai2;%定義符號(hào)變量fai1,fai2

>>y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))

運(yùn)行結(jié)果為:

y=

sin(fai1-fai2)

說(shuō)明:由本例可看出,使用函數(shù)syms創(chuàng)建符號(hào)對(duì)象較函數(shù)sym()簡(jiǎn)單。但注意,使用symsarg1arg2…格式定義符號(hào)變量時(shí),變量名之間只能用空格符隔離,而不能采用逗號(hào)或分號(hào),如寫(xiě)成symsfai1,fai2就是錯(cuò)誤的,它不能把fai2定義為符號(hào)變量。

2.4.2符號(hào)運(yùn)算中的運(yùn)算符號(hào)和基本函數(shù)

1.基本運(yùn)算符

(1)運(yùn)算符號(hào)“+”、“-”、“*”、“\”、“/”、“^”分別實(shí)現(xiàn)矩陣的加法、減法、乘法、左除、右除與求冪運(yùn)算。

(2)運(yùn)算符號(hào)“.*”、“.\”、“./”、“.^”分別實(shí)現(xiàn)元素對(duì)元素的數(shù)組相乘、左除、右除與求冪運(yùn)算。

(3)

運(yùn)算符號(hào)“′”實(shí)現(xiàn)矩陣的Hermition轉(zhuǎn)置或復(fù)數(shù)矩陣的共軛轉(zhuǎn)置;

運(yùn)算符號(hào)“.′”實(shí)現(xiàn)數(shù)組轉(zhuǎn)置或復(fù)數(shù)矩陣的非共軛轉(zhuǎn)置。

2.關(guān)系運(yùn)算符在符號(hào)對(duì)象的比較中,沒(méi)有“大于”、“大于等于”、“小于”、“小于等于”的概念,而只有是否“等于”的概念。運(yùn)算符號(hào)“==”和“~=”分別對(duì)它兩邊的對(duì)象進(jìn)行“相等”、“不相等”的比較。當(dāng)事實(shí)為“真”時(shí),比較結(jié)果用1表示;當(dāng)事實(shí)為“假”時(shí),比較結(jié)果用0表示。需要特別指出的是,MATLAB的符號(hào)對(duì)象無(wú)邏輯運(yùn)算功能。

3.三角函數(shù)及雙曲函數(shù)除函數(shù)atan2()僅能用于數(shù)值計(jì)算外,其余的三角函數(shù)(如sin())、雙曲函數(shù)(如cosh())及其反函數(shù)(如asin()、acosh()),無(wú)論在數(shù)值計(jì)算還是符號(hào)運(yùn)算中,其使用方法都相同。

4.指數(shù)與對(duì)數(shù)函數(shù)在數(shù)值計(jì)算與符號(hào)運(yùn)算中,指數(shù)函數(shù)與對(duì)數(shù)函數(shù)的使用方法完全相同,如函數(shù)sqrt()、exp()、expm()、log()、

log2()及l(fā)og10()等。

5.復(fù)數(shù)函數(shù)涉及復(fù)數(shù)的共軛函數(shù)conj()、求實(shí)部的函數(shù)real()、求虛部的函數(shù)imag()和求絕對(duì)值的函數(shù)abs(),在符號(hào)與數(shù)值計(jì)算中的使用方法相同。

6.矩陣代數(shù)運(yùn)算

在符號(hào)運(yùn)算中,MATLAB提供的常用矩陣代數(shù)函數(shù)有diag()、inv()、det()、rank()、poly()、expm()及eig()等。它們的用法幾乎與數(shù)值計(jì)算中的情況完全一樣?!纠?.45】基本運(yùn)算符號(hào)與基本函數(shù)應(yīng)用演示?!窘狻吭贛ATLAB命令窗口中輸入:>>symsx;%定義符號(hào)變量x>>f1=x^3+x^2+4*x+4;%生成多項(xiàng)式f1>>f2=x^2+4*x+10;%生成多項(xiàng)式f2>>f=f1+f2%求f1與f2之和運(yùn)行結(jié)果為:

f=x^3+2*x^2+8*x+14>>y=sqrt(x^5) %求函數(shù)的平方根

運(yùn)行結(jié)果為:y=(x^5)^(1/2)>>z=log10(x) %求以10為底的對(duì)數(shù)運(yùn)行結(jié)果為:z=log(x)/log(10)【例2.46】矩陣代數(shù)運(yùn)算演示。求矩陣的行列式值、逆和特征值。

【解】在MATLAB命令窗口中輸入:

>>symsa11a12a21a22;%定義符號(hào)變量a11,a12,a21,a22

>>A=[a11,a12;a21,a22]%生成矩陣A運(yùn)行結(jié)果為:A=[a11,a12][a21,a22]>>DA=det(A)

%求矩陣A的行列式

運(yùn)行結(jié)果為:DA=

a11*a22-a12*a21>>IA=inv(A)%求矩陣A的逆矩陣運(yùn)行結(jié)果為:IA=[a22/(a11*a22-a12*a21),-a12/(a11*a22-a12*a21)][-a21/(a11*a22-a12*a21),a11/(a11*a22-a12*a21)]>>EA=eig(A)%求矩陣A的特征值運(yùn)行結(jié)果為:EA=1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)

2.4.3符號(hào)表達(dá)式的操作

MATLAB符號(hào)表達(dá)式的操作涉及符號(hào)運(yùn)算中的因式分解、展開(kāi)、簡(jiǎn)化等,在符號(hào)運(yùn)算中非常重要,其相關(guān)的操作命令及功能見(jiàn)表2.18。

表2.18符號(hào)表達(dá)式的操作命令

1.符號(hào)(包括符號(hào)變量、符號(hào)常量及數(shù)值數(shù)組)替換

【例2.47】

已知數(shù)學(xué)表達(dá)式y(tǒng)=axn+bt+c,試對(duì)其進(jìn)行以下的符號(hào)替換:(1)a=sint,b=lnz,c=de2t的符號(hào)變量替換;(2)n=3,c=π的符號(hào)常量替換;(3)c=1∶2∶5的數(shù)值數(shù)組替換;(4)的數(shù)值矩陣替換。

【解】在MATLAB命令窗口中輸入:>>symsabcdetnxyz;>>y=a*x^n+b*t+c;>>y1=subs(y,[abc],[sin(t)log(z)d*exp(2*t)])%符號(hào)變量替換運(yùn)行結(jié)果為:y1=

sin(t)*x^n+log(z)*t+d*exp(2*t)>>y2=subs(y,[nc],[3pi])%符號(hào)常量替換

運(yùn)行結(jié)果為:y2=

a*x^3+b*t+pi>>y3=subs(y,c,1:2:5)%數(shù)值數(shù)組替換運(yùn)行結(jié)果為:y3=[a*x^n+b*t+1,a*x^n+b*t+3,a*x^n+b*t+5]>>y4=subs(y,c,[12;34])%數(shù)值矩陣替換

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論