版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、MATLAB及在控制系統(tǒng)課程中的應(yīng)用主講:劉凱峰 聯(lián)系電話子郵箱:kfliu2022/8/121參考書目1、Matlab及在電子信息課程中的應(yīng)用(第二版) 陳懷琛 電子工業(yè)出版社 2004年1月2、控制系統(tǒng)仿真與計算機輔助設(shè)計 薛定宇(東北大學) 機械工業(yè)出版社 2005年1月3、控制系統(tǒng)數(shù)字仿真與CAD (第二版) 張曉華(哈爾濱工業(yè)大學)機械工業(yè)出版社 2006年5月4、控制系統(tǒng)的數(shù)字仿真與計算機輔助設(shè)計 錢積新等 化學工業(yè)出版社 2003年5月5、基于MATLAB的系統(tǒng)分析與設(shè)計控制系統(tǒng) 樓順天等 西安電子科技大學出版社6、MATLAB6.X 教程 張志涌 徐彥
2、琴2022/8/122第一篇 語言篇第1章 MATLAB 語言概述第2章 基本語法第3章 MATLAB 的開發(fā)環(huán)境和工具第4章 MATLAB 的其他函數(shù)庫第5章 MATLAB的SIMULINK仿真第六章 計算機仿真的基本概念2022/8/123第二篇 應(yīng)用篇第6章 計算機仿真的基本概念第7章 MATLAB在自動控制原理中應(yīng)用 2022/8/124第1章 MATLAB語言概述1.1 MATLAB語言的發(fā)展1.2 MATLAB語言的特點1.3 MATLAB的工作環(huán)境 1.3.1 命令窗 1.3.2 圖形窗 1.3.3 文本編輯窗1.4 演示程序1.5 網(wǎng)絡(luò)資源2022/8/1251.1 MATLA
3、B語言的發(fā)展1.1.1 MATLAB 概述 MATLAB是集數(shù)值計算、符號運算及圖形處理等強大功能于一體的科學計算語言,是一種交互式的以矩陣為基礎(chǔ)的系統(tǒng)計算平臺,它用于科學和工程的計算與可視化。它的優(yōu)點在于快速開發(fā)計算方法,而不在于計算速度。 MATLAB已成為一門高校必修的課程,也是最為普遍的計算工具之一。2022/8/1261.1 MATLAB語言的發(fā)展(續(xù))1.1.2 Matlab的發(fā)展 MATLAB名字由MATrix和 LABoratory 兩詞的前三個字母組合而成。那是20世紀七十年代,時任美國新墨西哥大學計算機科學系主任的Cleve Moler出于減輕學生編程負擔的動機,為學生設(shè)計
4、了一組調(diào)用LINPACK和EISPACK矩陣軟件工具包庫程序的的“通俗易用”的接口,此即用FORTRAN編寫的萌芽狀態(tài)的MATLAB。1984年由Little、Moler、Steve Bangert合作成立MathWorks公司,并把MATLAB正式推向市場。從這時起,MATLAB的內(nèi)核采用C語言編寫,而且除原有的數(shù)值計算能力外,還新增了數(shù)據(jù)圖視功能。2022/8/1271997年仲春,MATLAB5.0版問世,緊接著是5.1、5.2,以及和1999年春的5.3版?,F(xiàn)今的MATLAB擁有更豐富的數(shù)據(jù)類型和結(jié)構(gòu)、更友善的面向?qū)ο?、更加快速精良的圖形可視、更廣博的數(shù)學和數(shù)據(jù)分析資源、更多的應(yīng)用開發(fā)
5、工具。2000年末又推出6.0版本。無論在界面的設(shè)計上還是在內(nèi)容上較以前版本都有很大的進展。2022/8/1281.1 MATLAB語言的發(fā)展(續(xù))1.1.3 Matlab的版本演化Matlab 1.0Pc matlab-matlab 386Matlab3.5+simulinkMatlab 4.0:simlink內(nèi)嵌(1992)Matlab 5.0 :全面的面向?qū)ο驧atlab 5.15.3 (1999)Matlab 6.0 (2000)Matlab 6.5:購并了MATRIXxMatlab 7.0: (2004) 2009a(7.8)2022/8/1291.2 MATLAB語言的特點友好的工
6、作平臺和編程環(huán)境簡單易用的程序語言強大的科學計算及數(shù)據(jù)處理能力出色的圖形處理功能應(yīng)用廣泛的模塊集和工具箱實用的程序接口和發(fā)布平臺模塊化的設(shè)計和系統(tǒng)級的仿真2022/8/12101.3 MATLAB的工作環(huán)境1.3.1 命令窗(Command Window) 單行命令執(zhí)行方式 執(zhí)行結(jié)果直接顯示1.3.2 圖形窗(Figure Window) 用圖形方式表示計算結(jié)果1.3.3 文本編輯窗(File Editor) 多行命令組成語言組,可以文件方式存盤下面就具體看一下MATLAB 的工作環(huán)境演示。2022/8/12111.4 演示程序在MATLAB的命令窗中鍵入 demo或demos2022/8/1
7、212%pend.mplot(-0.2,0.2,0;0,color,y,linestyle,-,linewidth,10);g=0.98;l=1;theta0=pi/6;x0=l*sin(theta0);y0=-l*cos(theta0);axis(-0.75,0.75,-1.25,0);axis(off);head=line(x0,y0,color,r,linestyle,.,erasemode,xor,markersize,40);body=line(0;x0,0,y0,color,b,linestyle,-,erasemode,xor);t=0;dt=0.01;while t0 fix=
8、floor x0 fix=ceil 函數(shù)名含義abs絕對值或者復(fù)數(shù)模sqrt平方根real實部imag虛部conj復(fù)數(shù)共軛round4舍5入到整數(shù)fix舍入到最接近0的整數(shù)floor舍入到最接近-的整數(shù)ceil舍入到最接近的整數(shù)2022/8/12512.3.3 元素群的函數(shù)函數(shù)名含義sign符號函數(shù)rem留數(shù)sin正弦cos余弦tan正切asin反正弦acos反余弦atan反正切atan2第四象限反正切函數(shù)名含義sinh雙曲正弦cosh雙曲余弦tanh雙曲正切exp自然指數(shù)log自然對數(shù)log10以10為底的對數(shù)bessel貝賽爾函數(shù)gamma伽嗎函數(shù)rat有理逼近2022/8/12522.4
9、 邏輯判斷及流程控制2.4.1 關(guān)系操作符MATLAB常用的關(guān)系操作符有:(小于)、(大于)、=(大于或等于)、 = =(等于)、 =(不等于)。MATLAB的關(guān)系操作符可以用來比較兩個大小相同的數(shù)組,或者比較一個數(shù)組和一個標量。在與標量比較時,結(jié)果和數(shù)組大小一樣。a=1:9;b=a4b = 0 0 0 0 1 1 1 1 1c=a(a4)c = 5 6 7 8 92022/8/12532.4.1 關(guān)系操作符矩陣查找和排序子矩陣的查找使用find命令完成,它返回關(guān)系表達式為真的下標。例如:a=10:20;find(a15)ans = 7 8 9 10 11矩陣的排序使用sort函數(shù),它將矩陣按
10、照升序排列。2022/8/12542.4.2 邏輯運算邏輯操作符定義了一種與或非的關(guān)系表達式。MATLAB的邏輯操作符有&(與)、|(或)、(非)、xor(異或)。例如:c=(a4)c =1 1 1 1 0 0 0 0 0c=(a4)&(a7)c =0 0 0 0 1 1 0 0 0C=xor(A,B)2022/8/12552.4.3 其他關(guān)系與邏輯函數(shù)xor(x,y) 異或運算。x或y非零(真)返回1,x和y都是零(假)或都是非零(真)返回0。any(x) 如果在一個向量x中,有元素非零,返回1;矩陣x中的每一列有非零元素,返回1。all(x) 如果在一個向量x中,所有元素非零,返回1;矩陣
11、x中的每一列所有元素非零,返回1。2022/8/1256%邏輯函數(shù)的運用示例。randn(state,1),R=randn(3,6) %創(chuàng)建正態(tài)隨機陣 L=abs(R)1.5 %不等式條件運算,結(jié)果給出邏輯數(shù)組 R(L)=0%邏輯1對應(yīng)的元素賦0值。 s=(find(R=0)%利用find獲得符合關(guān)系等式條件的元素單下標 R(s)=111%利用單下標定位賦值 ii,jj=find(R=111);%利用find獲得符合關(guān)系等式條件的元素雙下標disp(ii),disp(jj)2022/8/1257【例】關(guān)系運算運用之一:求近似極限,修補圖形缺口。t=-2*pi:pi/10:2*pi;y=sin(
12、t)./t;subplot(1,2,1),plot(t,y),axis(-7,7,-0.5,1.2),xlabel(t),ylabel(y),title(殘缺圖形)tt=t+(t=0)*eps;yy=sin(tt)./tt;subplot(1,2,2),plot(tt,yy),axis(-7,7,-0.5,1.2)xlabel(t),ylabel(yy),title(正確圖形) Warning: Divide by zero. 2022/8/12582022/8/1259【例】邏輯操作應(yīng)用之一:逐段解析函數(shù)的計算和表現(xiàn)。本例演示削頂整流正弦半波的計算和圖形繪制。t=linspace(0,3*p
13、i,500);y=sin(t); z1=(t2*pi).*y;w=(tpi/3&t7*pi/3&t8*pi/3);w_n=w;z2=w*sin(pi/3)+w_n.*z1;subplot(1,3,1),plot(t,y,:r),ylabel(y)subplot(1,3,2),plot(t,z1,:r),axis(0 10 -1 1)subplot(1,3,3),plot(t,z2,-b),axis(0 10 -1 1) 2022/8/12602022/8/1261【例】寫出生成下圖所示波形的MATLAB腳本文件M文件。圖中虛線為正弦波,要求它的負半波被置零,且在 處被削頂。 2022/8/12
14、62t=linspace(0,3*pi,500);y=sin(t); z1=(t2*pi).*y;w=(tpi/3&t7*pi/3&t=10 y=x2+3;elseif x=0 y=x3+4*x;else y=x5+x;end yx=input(x=);if x=10 y=x2+3;else if x=0 y=x3+4*x; else y=x5+x; endendy2022/8/12672.4.4 流程控制語句 for循環(huán)(一般用于循環(huán)次數(shù)已知的情況)for循環(huán)允許一組命令以固定的次數(shù)重復(fù),它的一般形式是for x=array commandendfor 和end之間的命令串按數(shù)組array的
15、每一列執(zhí)行一次,直到n次后終止。如:for j=1:2:10 y=j+j.2; end2022/8/12682.4.4 流程控制語句for循環(huán)內(nèi)部接受任何有效的MATLAB數(shù)組;for循環(huán)可以嵌套;只要有矩陣形式可以解決的問題,不要使用for循環(huán)。使用for循環(huán)的算法執(zhí)行很慢,一個好的MATLAB算法不應(yīng)當出現(xiàn)循環(huán)語句。Tic/toc循環(huán)可以使用break跳出,但只跳出所在的循環(huán),不跳出整個嵌套結(jié)構(gòu)。循環(huán)變量可以是一個數(shù)組,如: X= 11,2,3;-44 ,54,60 for A=X Y=A(1)+A(2) end; Y2022/8/12692.4.4 流程控制語句while循環(huán)與for循環(huán)
16、以固定的次數(shù)求一組指令相反,while循環(huán)以不定的次數(shù)求一組語句的值。While循環(huán)的一般形式為:while expression commondsend只要表達式expression里的所有元素為真,就執(zhí)行命令串commands。通常表達式求值給一個標量值,矩陣也同樣有效。元素都不為零可執(zhí)行。2022/8/1270求y=0;for x=1:100 y=y+x;endyN=input(N=);y=0;for i=1:N for j=1:N y=y+1/(i+j); endendyN=input(N=);y=0;i=1;while i=N j=1; while j=N y=y+1/(i+j);
17、j=j+1; end i=i+1;endy2022/8/1271【例】Fibonacci數(shù)組的元素滿足Fibonacci 規(guī)則: , ;且 ?,F(xiàn)要求該數(shù)組中第一個大于10000的元素a(1)=1; a(2)=1;i=2;while a(i)=10000 a(i) break; end;endi ans = 10946i = 21 2022/8/12732.4.4 流程控制語句Switch 語句 是一種均衡實現(xiàn)的多分支語句。Switch expressionCase 值1 commands1Case 值2 commands2 Otherwise commandsNEnd如果一個條件滿足,在執(zhí)行完
18、語句體后就到END2022/8/1274學生的成績管理,用來演示switch結(jié)構(gòu)的應(yīng)用。 clear;for i=1:10 ai=89+i;bi=79+i;ci=69+i;di=59+i;end;c=d,c;Name= Jack,Marry,Peter, Rose, Tom;Mark=72,83,56,94,100;Rank=cell(1,5);S=struct(Name,Name,Marks,Mark,Rank,Rank);2022/8/1275for i=1:5 switch S(i).Marks case 100 S(i).Rank=滿分; case a S(i).Rank= 優(yōu)秀; c
19、ase b S(i).Rank= 良好; case c S(i).Rank= 及格; otherwise S(i).Rank=不及格; endenddisp(學生姓名 , 得分 , 等級); disp( )for i=1:5; disp(S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank);end; 結(jié)果:學生姓名 得分 等級 Jack 72 及格 Marry 83 良好 Peter 56 不及格 Rose 94 優(yōu)秀 Tom 100 滿分 2022/8/12762.5 基本繪圖方法2.5.1 直角坐標中的兩維曲線plot(y
20、) 以y的下標作為x坐標,以y值作為y坐標。plot(x,y) 數(shù)組x和y的長度應(yīng)匹配。每次繪制將清除以前的圖形。2022/8/12772.5.1 直角坐標中的兩維曲線圖形的標注和圖例1、title(text) %給圖形加上標題2、xlabel(text) %給X軸加上說明3、ylabel(text) %給Y軸加上說明4、zlabel(text) %給Z軸加上說明5、text(x,y,string) %在圖形指定位置加上說明6、gtext(string) %利用鼠標在圖形加上說明7、legend(string1,string2,.) %給圖形加圖例8、legend off %關(guān)閉圖例2022/
21、8/1278如:作y=sin(t)的二維圖形t=linspace(0,3*pi,200);y=sin(t);plot(t,y);title(y=sin(t);xlabel(t/s);ylabel(y=sin(t);text(3,0.4,y=sin(t);legend(y=sin(t);gtext(y=sin(t)2022/8/12792.5.2 線型、點型和顏色plot(x,y,r:) 后面是顏色和線型標識符顏色標識符線型標識符線型y黃.點S正方形標記m品紅o圓圈D菱形標記c青xX號朝上三角形r紅+號V朝下三角形g綠-實線朝右三角形b藍*星號1error( VAL must be a scal
22、ar. )end這里,如果變量val 不是一個標量,error 顯示消息字符串,把控制權(quán)返回給命令窗口和鍵盤。2022/8/12116M函數(shù)文件示例。circle.mfunction sa = circle(r,s)%CIRCLE plot a circle of radii r in the line specified by s.%r指定半徑的數(shù)值%s指定線色的字符串%sa圓面積% circle(r)利用藍實線畫半徑為 r 的圓周線.% circle(r,s)利用串 s 指定的線色畫半徑為 r 的圓周線.% sa=circle(r)計算圓面積,并畫半徑為 r 的藍色圓面.% sa=circ
23、le(r,s)計算圓面積,并畫半徑為 r 的 s 色圓面.% 編寫于2006年4月7日,修改于2006年6月27日。2022/8/12117if nargin2 error(輸入宗量太多。);end;if nargin=1 s=b;end;clf;t=0:pi/100:2*pi;x=r*exp(i*t);if nargout=0 plot(x,s);else sa=pi*r*r; fill(real(x),imag(x),s)endaxis(square) 2022/8/12118第3章 MATLAB 的開發(fā)環(huán)境和工具 3.1 MATLAB與其它軟件的接口關(guān)系3.2 MATLAB的文件管理系統(tǒng)
24、3.3 MATLAB 6.x的開發(fā)環(huán)境2022/8/121193.1 MATLAB與其它軟件的接口關(guān)系3.1.1 與磁盤操作系統(tǒng)的接口關(guān)系1、變量的存儲和下載 如:save aa a b c %將內(nèi)存變量a, b, c內(nèi)容以文件aa.mat的方式存儲在磁盤中。 或save aa a b c ascii %以ASCII碼格式存儲2022/8/121203.1.1 與磁盤操作系統(tǒng)的接口關(guān)系 load aa 表示將磁盤上存儲的aa.mat 數(shù)據(jù)文件內(nèi)容取回到工作空間即內(nèi)存中。 此時內(nèi)存中的變量與存儲時的變量相同。 此時必須注意,原來內(nèi)存中不能有與提取文件中的變量相同的變量,否則原來內(nèi)存中的變量內(nèi)容將
25、被取代而丟失。2022/8/121213.1.1 與磁盤操作系統(tǒng)的接口關(guān)系2、工作日志的記錄 diary 命令可以把MATLAB工作過程中的全部屏幕文字和數(shù)據(jù)以文本方式記錄下來,成為一個工作記錄。 diary on %默認文件名diary.txt diary bbb %文件名為bbb.txt diary off %結(jié)束記錄2022/8/121223.1.1 與磁盤操作系統(tǒng)的接口關(guān)系3、日期和時間命令%提取年月日時分秒數(shù)據(jù)并求差值 t0=clock; y=inv(rand(100,100); etime(clock,t0) t=cputime; %以開機時間為基準 y=inv(rand(100,
26、100); cputime-t tic; %秒表置零,求經(jīng)歷的時間 y=inv(rand(100,100); toc2022/8/121233.1.1 與磁盤操作系統(tǒng)的接口關(guān)系4、不退出MATLAB環(huán)境運行其他軟件 格式: !命令 2022/8/121243.1.2 與文字處理系統(tǒng)WINWORD 的關(guān)系利用剪貼板進行交互文字編輯器的使用Notebook軟件工具2022/8/121253.1.3 圖形文件的轉(zhuǎn)儲可以利用圖形窗口中 figure copy來粘貼??梢岳脠D形窗口File菜單中的導(dǎo)出子菜單Export來選擇需要存儲的圖形文件格式。可以利用圖形窗口的工具對圖形進行一些相關(guān)處理。2022
27、/8/121263.1.4 低層輸入輸出函數(shù)庫主要是實現(xiàn)文件內(nèi)容的相互交換。如:map=imread(aa.bmp)就是將圖象數(shù)據(jù)讀入map中。每條命令的使用可以通過HELP查閱。2022/8/121273.2 MATLAB的文件管理系統(tǒng)MATLAB 自身的用戶文件格式1、程序文件 .m2、數(shù)據(jù)文件.mat3、可執(zhí)行文件.mex4、仿真模型文件.mdl5、仿真文件.s2022/8/121283.2 MATLAB的文件管理系統(tǒng)who(whos)cd(chdir,pwd)dir(ls)typewhatwhichclcedit!echoloadclear/packsavediary2022/8/12
28、1293.3 MATLAB 6.X的開發(fā)環(huán)境這里主要通過MATLAB 6.0的演示來獲得開發(fā)環(huán)境的了解。1、命令窗口 2、歷史命令窗口3、資源目錄本 4、當前路徑瀏覽器5、工作空間瀏覽器 6、幫助瀏覽器7、數(shù)組編輯器 8、程序編輯器要掌握最基本的環(huán)境使用。2022/8/12130第4章 MATLAB的其他函數(shù)庫4.1 數(shù)據(jù)分析函數(shù)庫datafun4.2 矩陣的分解與變換matfun4.3 多項式函數(shù)庫polyfun4.4 函數(shù)功能和數(shù)值積分函數(shù)庫funfun4.5 字符串函數(shù)庫strfun4.6 稀疏矩陣函數(shù)庫sparfun4.7 圖形界面函數(shù)庫guitools4.8 數(shù)據(jù)類型函數(shù)庫datat
29、ypes 2022/8/121314.1 數(shù)據(jù)分析函數(shù)庫datafuncorrcoef(x)求相關(guān)系數(shù)cov(x)協(xié)方差矩陣cplxpair(x)把向量分類為復(fù)共軛對cross(x, y)向量的向量積cumprod(x)列累計積cumsum(x)列累計和del2(A)五點離散拉氏算子diff(x) 計算元素之間差dot(x, y)向量的點積gradient(Z, dx, dy)近似梯度histogram(x)直方圖和棒圖max(x), max(x, y)最大分量mean(x)均值或列的平均值median(x)列的中值min(x), min(x, y)最小分量prod(x)列元素的積rand(x
30、)均勻分布隨機數(shù)randn(x)正態(tài)分布隨機數(shù)sort(x)按升序排列std(x)列的標準偏差subspace(A, B)兩個子空間之間的夾角sum(x)各列的元素和2022/8/121324.1 數(shù)據(jù)分析函數(shù)庫datafun4.1.1 基本的數(shù)據(jù)分析1. max %求各列最大值min %求各列最小值 mean %求各列平均值std %求各列標準差median %求各列中間元素sum %求各列和trapz %梯形法求積分 diff %求差分sort %排序 2022/8/12133max(A)=0.9501 0.8214 0.9218 0.9355min(A)=0.2311 0.0185 0.
31、1763 0.4057mean(A)=0.6331 0.5006 0.6487 0.7124std(A)=0.2963 0.3197 0.2861 0.2783median(A)=0.6068 0.4565 0.7382 0.8936sum(A)=3.1654 2.5032 3.2437 3.5620trapz(A)=2.2447 1.8998 2.8478 2.9123diff(A)=-0.7190 -0.3056 0.1765 0.5298 0.3757 -0.4380 0.1299 -0.0186 -0.1209 0.8029 -0.1836 -0.5066 0.4053 -0.3767
32、 -0.5619 0.4834sort(A)=0.2311 0.0185 0.1763 0.4057 0.4860 0.4447 0.6154 0.4103 0.6068 0.4565 0.7382 0.8936 0.8913 0.7621 0.7919 0.9169 0.9501 0.8214 0.9218 0.93552022/8/121344.1 數(shù)據(jù)分析函數(shù)庫datafun4.1.2 用于場論的數(shù)據(jù)分析函數(shù)1、gradient %求梯度2、del2 %拉普拉斯算子3、cross %求矢量積4、dot %求數(shù)量積2022/8/121354.1 數(shù)據(jù)分析函數(shù)庫datafun4.1.3 用于
33、隨機數(shù)據(jù)分析的函數(shù)1、rand(m,n)2、randn(m,n)3、hist(x) %畫直方圖4、hist(x,N) %N等份畫直方圖2022/8/12136x=rand(1,1000);plot(x)hist(x)2022/8/12137x=randn(1,1000);plot(x)hist(x); hist(x,50);2022/8/121384.1 數(shù)據(jù)分析函數(shù)庫datafun4.1.4 用于相關(guān)和傅立葉分析的函數(shù)1、corrcoef(x,y) %相關(guān)系數(shù)2、cov(x,y) %協(xié)方差 3、conv(x,y) %卷積和多項式相乘4、deconv(x,y) %反卷積和多項式相除5、filt
34、er(b,a,x) %一維數(shù)據(jù)濾波6、X=fft(x,N) %快速傅立葉變換7、X=ifft(X) %逆傅立葉變換8、sound(u,s) %向量變?yōu)槁曇?、filter2, conv2,deconv, fft2,ifft2等2022/8/12139x=rand(1,1000);y=randn(1,1000); R= 1.0000 0.0094R=corrcoef(x,y) 0.0094 1.0000 %對角線是自相關(guān)系數(shù)Z=cov(x,y) Z = 0.0835 0.0026 0.0026 0.8928%對角線是x和y的均方差P=conv(x,y); %卷積 P長度為Mx+Ny-1如 x=1
35、 3 2 1; y=1 2 2;Q ,R=deconv(x,y)則:Q = 1 1R = 0 0 -2 -12022/8/12140%構(gòu)造受噪聲污染的信號clear; randn(state,0); t=linspace(0,10,512);y=3*sin(5*t)-6*cos(9*t)+5*randn(size(t); plot(t,y) %繪制幅頻曲線Y=fft(y);Ts=t(2)-t(1)%時間信號的采樣周期Ws=2*pi/Ts;%時間信號的采樣頻率Wn=Ws/2 %Nyquest頻率w=linspace(0,Wn,length(t)/2);%半采樣頻率中相應(yīng)的刻度Ya=abs(Y(1
36、:length(t)/2);plot(w,Ya) %繪制局部放大的幅頻曲線ii=find(w0找到零點后退出Options為優(yōu)化迭代所采用的參數(shù)選項function y=jszero(t,a,b) y=sin(t).2.*exp(-a.*t)-b.*abs(t); z,fz=fzero(jszero,1.6,0.1,0.5)2022/8/12172(三)積分 (分割,求和) trapz 梯形法求積分 quad 辛普森遞歸法求積分(精確) quad8 牛頓-克斯特斯遞歸法(更精確) x=1.5:0.02:5; %人為分割y=10*exp(-x).*cos(x);a=trapz(x,y)a = -
37、1.07571950613197x=1.5:0.005:5;y=10*exp(-x).*cos(x);a=trapz(x,y)a= -1.075795412897992022/8/12173求定積分:quad() 采用遞推自適應(yīng)Simpson法quad(函數(shù)名,初值x0,終值xf)求定積分quad(fun,a,b,TOL,TRACE,P1,P2,.) tol 控制絕對誤差,trace 取非零 將逐點畫。 F = inline(1./(x.3-2*x-5); Q = quad(F,0,2);Q = quad(myfun,0,2); function y = myfun(x) y = 1./(x.
38、3-2*x-5);2022/8/12174quadl()采用遞推自適應(yīng)Lobatto法 F = inline(1./(x.3-2*x-5); Q = quadl(F,0,2); Q = quadl(myfun,0,2); function y = myfun(x) y = 1./(x.3-2*x-5); 2022/8/12175ode45采用4,5階龍格庫塔法求解微分方程常用龍格-庫塔法進行數(shù)值積分求解微分方程(非病態(tài)):t,x=ode23(xfun,t0,tf,x0,tol,trace) %2階3階算法(低階)t,x=ode45(xfun,t0,tf,x0,tol,trace) %4階5階算
39、法(中階)這里的方程必須是形如 的一階常微分方程組。 t0、tf:起始、終止時間 x0:初始狀態(tài)向量 tol:控制精度 trace:附加參數(shù)返回值x是矩陣,其列數(shù)為方程階次n,行數(shù)和t的個數(shù)相同。每一行為同一時間系統(tǒng)各狀態(tài)值。對于病態(tài)系統(tǒng),一般采用可變階次算法ode15s ()。其它算法: ode23s(病、低階) , ode23t(梯形法、中等病態(tài)) ode113(非病、變階), ode23tb(病態(tài),低階、梯形)2022/8/12176x,y=ode45(函數(shù)名,自變量初值x0,自變量終值xf,因變量初值x0); t,y=ode45(vdp1,0 20,2; 0); plot(t,y(:,
40、1);figure; plot(y(:,1),y(:,2);function yp=vdp1(t,y) r=2; yp(1)=y(2); yp(2)=-r*(y(1).2-1)*y(2)-y(1); yp=yp; % yp=y(2);-r*(y(1).2-1)*y(2)-y(1);2022/8/12177t,y=ode45(vdp2,0, 30,1;0;0;1 )plot(t,y(:,1)function yp=vdp2(t,y) yp(1)=y(2); yp(2)=y(3); yp(3)=y(4); yp(4)=-y(4)-(y(1)2+y(1)*y(3)-(y(1)+1)*y(2)-y(1
41、); yp=yp; %yp=y(2);y(3);y(4);-y(4)-(y(1)2+y(1)*y(3)-(y(1)+1)*y(2)-y(1)2022/8/12178x(1)=x;x(2)=dx/dt;function ydot=DyDt(t,x) mu=2; ydot=x(2);mu*(1-x(1)2)*x(2)-x(1);tt,yy=ode45(DyDt,0,30,1;0);plot(tt,yy(:,1);title(x(t);2022/8/121794.5 字符串函數(shù)庫strfuneval(string) 作為一個MATLAB 命令求字符串的值blanks(n) 返回一個n 個零或空格的字
42、符串deblank 去掉字符串中后拖的空格feval 求由字符串給定的函數(shù)值findstr 從一個字符串內(nèi)找出字符串isletter 字母存在時返回真值2022/8/12180isspace 空格字符存在時返回真值isstr 輸入是一個字符串,返回真值lasterr 返回上一個所產(chǎn)生MATLAB 錯誤的字符串strcmp 字符串相同,返回真值strrep 用一個字符串替換另一個字符串strtok 在一個字符串里找出第一個標記2022/8/12181eval的使用P1=0.1;P2=0.5;y=sin(x).2.*exp(-P1*x)-P2*abs(x); x=-10:0.01:10;Y=eva
43、l(y);plot(x,Y);grid on2022/8/121824.5 字符串函數(shù)庫strfun字 符 串 轉(zhuǎn) 換dec2hex十進制數(shù)到十六進制字符串轉(zhuǎn)換fprintf把格式化的文本寫到文件中或顯示屏上hex2dec十六進制字符串轉(zhuǎn)換成十進制數(shù)hex2num十六進制字符串轉(zhuǎn)換成IEEE浮點數(shù)int2str整數(shù)轉(zhuǎn)換成字符串lower字符串轉(zhuǎn)換成小寫2022/8/12183num2str數(shù)字轉(zhuǎn)換成字符串char 數(shù)值轉(zhuǎn)換為ASCII字符串sprintf用格式控制,數(shù)字轉(zhuǎn)換成字符串sscanf用格式控制,字符串轉(zhuǎn)換成數(shù)字str2mat字符串轉(zhuǎn)換成一個文本矩陣str2num字符串轉(zhuǎn)換成數(shù)字upp
44、er字符串轉(zhuǎn)換成大寫2022/8/12184串數(shù)組的屬性和標識 1、創(chuàng)建字符串數(shù)組-用單引號對A=This is an example.2、字符串大小-字符個數(shù)m,n=size(A)3、串數(shù)組的元素標識A14=A(1:4) %提取子字符串ra=A(end:-1:1) %字符串倒排ra = .elpmaxe na si sihT2022/8/121854、串數(shù)組的ASCII碼ascii_a=double(A); %產(chǎn)生ASCII碼 ascii_a=84 104 105 115 32 105 115 32 97 110 32 101 120 97 109 112 108 101 46 char(a
45、scii_a) %把ASCII碼變回字符串5、對字符串ASCII碼數(shù)組的操作W=find(A=a&A1) ,hold on,end, end;,hold off,); 2022/8/122312022/8/12232(3)形成坐標網(wǎng)格控制按鍵 h_push1=uicontrol(h_fig,style,push,. unit,normalized,position,0.67,0.37,0.12,0.15,. string,grid on,callback,grid on);h_push2=uicontrol(h_fig,style,push,. unit,normalized,position
46、,0.67,0.15,0.12,0.15,. string,grid off,callback,grid off);2022/8/122332022/8/12234(4)輸入阻尼比系數(shù),可得單位階躍響應(yīng)曲線 2022/8/12235利用控制對象面板設(shè)計1在Matlab中選中File-New-GUI2選中Blank GUI(Default)3選中Axes作坐標,并存盤4選Static Text并在圖中選擇,雙擊寫字符串5選擇Edit編輯文本框,Tag取名fdisp,同時編寫fdisp.m 并在Callback調(diào)用fdisp.m6增加Grid on 和Grid off按鈕2022/8/12236%
47、fdisp.m腳本文件clear all% z=str2num(get(findobj(gcbf,tag,fdisp),string);z=str2num(get(gcbo,string)t=0:0.1:15;for k=1:length(z) y(:,k)=step(1,1 2*z(k) 1,t); plot(t,y(:,k); if (length(z)1) hold on endendhold off2022/8/122372022/8/12238實例分析1先創(chuàng)建一個圖形窗口,鍵入figure,并保存為ex01.fig2在Matlab菜單中選中File-New-GUI建立一個新的控制對象
48、面板3從控制面板菜單中選File-New-Open-ex014選中Axes作坐標5添加編輯文本框,Tag取名ex_edit,同時編寫ex_edit.m 并在Callback調(diào)用ex_edit.m2022/8/122396增加Load, Apply, Grid on ,Grid off ,Close按鈕,并增加彈出菜單(Popup Mean);增加兩個靜態(tài)文本Input data和Color choose7加入popmenu,string為spring,summer, autumn, winter, callback和tag為ex_color,8選mean editornew menu-labe
49、l和tag輸ex_view,再增加view_2D,view_3D,Callback為view(2),view(3)2022/8/12240ex_edit.m ex_load.m%ex_edit.mfunction ex_editct=get(findobj(gcbf,tag,ex_edit),string);save mydata ct%ex_load.mfunction ex_loadload mydataset(gcbf,userdata,ct);2022/8/12241ex_apply%ex_applyfunction ex_applyct=get(gcbf,userdata);eval
50、(ct);plot(x,y)%Closeclose(gcbf)2022/8/12242%ex_color%ex_color function ex_colorpopstr=spring,summer,autumn,winter;vpop=get(findobj(gcf,tag,ex_color), value);colormap(eval(popstrvpop);2022/8/122432022/8/122444.8 數(shù)據(jù)類型函數(shù)庫datatypes元胞數(shù)組C_str=char(這是,元胞數(shù)組創(chuàng)建算例 1);R=reshape(1:9,3,3);Cn=1+2i;S_sym=sym(sin(-3
51、*t)*exp(-t)A(1,1)=C_str;A(1,2)=R;A(2,1)=Cn;A(2,2)=S_sym;A=C_str,R,Cn,S_symA2022/8/12245結(jié)果:A= 2x10 char 3x3 double 1.0000+ 2.0000i 1x1 sym顯示內(nèi)容:A1,1A1,2A1,42022/8/12246元胞數(shù)組在存放和操作字符串上的應(yīng)用a=MATLAB 5 ;b=introduces new data types:;c1=Multidimensional array;c2=User-definable data structure;c3=Cell arrays;c4
52、=Character array;c=char(c1,c2,c3,c4);C=a;b;c;adisp(C1:2); disp( )disp(C3) MATLAB 5 introduces new data types: Multidimensional array User-definable data structureCell arrays Character array 2022/8/12247構(gòu)架數(shù)組 本例通過溫室數(shù)據(jù)(包括溫室名、容積、溫度、濕度等)演示:單構(gòu)架的創(chuàng)建和顯示。green_=一號房;green_house.volume=2000立方米;green_house.param
53、eter.temperature=31.2 30.4 31.6 28.7 29.7 31.1 30.9 29.6;green_house.parameter.humidity=62.1 59.5 57.7 61.5 62.0 61.9 59.2 57.5;2022/8/12248green_house green_house = name: 一號房 volume: 2000立方米 parameter: 1x1 struct green_house.parameter ans = temperature: 2x4 double humidity: 2x4 double 2022/8/12249g
54、reen_house.parameter.temperature ans = 31.2000 30.4000 31.6000 28.7000 29.7000 31.1000 30.9000 29.6000 2022/8/12250利用構(gòu)造函數(shù)創(chuàng)建構(gòu)架數(shù)組 a=cell(2,3);green_house_1=struct(name,a,volume,a,parameter,a(1,2) green_house_1 = 2x3 struct array with fields: name volume parameter 2022/8/12251利用構(gòu)造函數(shù)創(chuàng)建構(gòu)架數(shù)組green_house_2=
55、struct(name,a,volume,parameter,) green_house_2 = 2x3 struct array with fields: name volume parameter 2022/8/12252利用構(gòu)造函數(shù)創(chuàng)建構(gòu)架數(shù)組green_hopuse_3(2,3)=struct(name,volume,parameter,) green_hopuse_3 = 2x3 struct array with fields: name volume parameter 2022/8/12253利用構(gòu)造函數(shù)創(chuàng)建構(gòu)架數(shù)組a1=六號房;a2=3200立方米;green_house_4
56、(2,3)=struct(name,a1,volume,a2,parameter,);T6=31.2,30.4,31.6,28.7;29.7,31.1,30.9,29.6;green_house_4(2,3).parameter.temperature=T6;green_house_4 ans = 2x3 struct array with fields: name volume parameter 2022/8/12254第五章 MATLAB的SIMULINK仿真SIMULINK是一個進行動態(tài)系統(tǒng)建模、仿真和綜合分析的集成軟件包。它可以處理的系統(tǒng)包括:線性、非線性系統(tǒng);離散、連續(xù)及混合系統(tǒng);
57、單任務(wù)、多任務(wù)離散事件系統(tǒng)。在 SIMULINK 提供的圖形用戶界面GUI上,只要進行鼠標的簡單拖拉操作就可構(gòu)造出復(fù)雜的仿真模型。它外表以方塊圖形式呈現(xiàn),且采用分層結(jié)構(gòu)。從建模角度講,這既適于自上而下(Top-down)的設(shè)計流程(概念、功能、系統(tǒng)、子系統(tǒng)、直至器件),又適于自下而上(Bottum-up) 逆程設(shè)計。2022/8/12255MATLAB的SIMULINK仿真從分析研究角度講,這種 SIMULINK 模型不僅能讓用戶知道具體環(huán)節(jié)的動態(tài)細節(jié),而且能讓用戶清晰地了解各器件、各子系統(tǒng)、各系統(tǒng)間的信息交換,掌握各部分之間的交互影響。在 SIMULINK 環(huán)境中,用戶將觀察到現(xiàn)實世界中非線
58、性因素和各種隨機因素對系統(tǒng)行為的影響。在 SIMULINK 環(huán)境中,用戶可以在仿真進程中改變感興趣的參數(shù),實時地觀察系統(tǒng)行為的變化。2022/8/12256MATLAB的SIMULINK仿真在MATLAB 6.0 版中,可直接在 SIMULINK 環(huán)境中運作的工具包很多,已覆蓋通信、控制、信號處理、DSP、電力系統(tǒng)等諸多領(lǐng)域,所涉內(nèi)容專業(yè)性極強。本講由淺入深地講述 SIMULINK 對各種數(shù)學、工程問題的建模、仿真和分析的基本方法,采用“算例”作為主體,配以適量的歸納性表述。2022/8/12257模型的創(chuàng)建和模型文件SIMULINK 模型是什么?SIMULINK 模型有以下幾層含義:在視覺上
59、表現(xiàn)為直觀的方框圖;在文件上則是擴展名為 mdl 的ASCII代碼;在數(shù)學上表現(xiàn)為一組微分方程或差分方程; 在行為上則模擬了實際系統(tǒng)的動態(tài)特性 。2022/8/12258SIMULINK 模型通常包含三種 “組件”:信源( Sources):可以是常數(shù)、時鐘、白噪聲、正弦波、階梯波、掃頻信號、脈沖生成器、隨機數(shù)產(chǎn)生器等信號源; 系統(tǒng)( System):即指被研究系統(tǒng)的 SIMULINK 方框圖; 信宿( Sink):可以是示波器、圖形記錄儀等。對于具體的 SIMULINK 模型而,不一定完全地包含這三大組件。例如:研究初始條件對系統(tǒng)影響就不必包含信源組件。2022/8/12259SIMULIN
60、K 模型的創(chuàng)建創(chuàng)建模型文件;選擇對象; 模塊的操作; 連線的操作; 對模型的注釋; 創(chuàng)建子系統(tǒng); 仿真的配置 ; 保存模型;仿真和結(jié)果分析。2022/8/12260仿真運行使用菜單進行仿真設(shè)置仿真參數(shù)和選擇求解器通過選擇菜單 Simulation 下的 Parameters 菜單項,用來設(shè)置仿真參數(shù)和選擇求解器。其中有三個頁面管理這些仿真參數(shù)。在 Solver 頁面,設(shè)置開始和停止時間,選擇求解器和指定求解器(solver)的參數(shù),另外還可以選擇一些輸出選項。在 Solver options 中, SIMULINK 模型的仿真涉及到一組常微分方程(ODEs)的數(shù)值積分。如果模型是連續(xù)系統(tǒng),使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 半導(dǎo)體封裝設(shè)計行業(yè)營銷策略方案
- 商品和服務(wù)的質(zhì)量控制行業(yè)相關(guān)項目經(jīng)營管理報告
- 性別平等心理咨詢熱線服務(wù)行業(yè)市場調(diào)研分析報告
- 助產(chǎn)士服務(wù)行業(yè)營銷策略方案
- 寄宿學校教育服務(wù)行業(yè)營銷策略方案
- 氣量計計量儀器產(chǎn)品供應(yīng)鏈分析
- 聲音傳送裝置用話筒挑桿產(chǎn)品供應(yīng)鏈分析
- 科學用棱鏡細分市場深度研究報告
- 蛋糕鏟細分市場深度研究報告
- 托管網(wǎng)站行業(yè)營銷策略方案
- 鎂合金行業(yè)發(fā)展分析及投資前景預(yù)測報告
- 室內(nèi)維修方案
- 小學信息技術(shù)課堂與學科教學逆向融合管見 論文
- 軍士生生涯規(guī)劃
- 認知障礙人員培訓(xùn)課件
- 急診科中的老年病急癥救治
- 亞馬遜賬戶安全培訓(xùn)內(nèi)容
- 生活區(qū)消防安全培訓(xùn)課件
- 諾如病毒護理查房
- 醫(yī)療設(shè)備移機服務(wù)投標方案
- 塑料杯模具設(shè)計
評論
0/150
提交評論