Matlab編程及系統(tǒng)仿真調(diào)好.ppt
《Matlab編程及系統(tǒng)仿真調(diào)好.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《Matlab編程及系統(tǒng)仿真調(diào)好.ppt(324頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1,Matlab編程及系統(tǒng)仿真,華中科技大學(xué)文華學(xué)院 控制系 余愿 信息學(xué)部 B313,2,上課認(rèn)真聽講 課后認(rèn)真復(fù)習(xí)、加以實(shí)踐 獨(dú)立完成不定期課堂練習(xí),不抄襲 上機(jī)是學(xué)習(xí)本課程的重要環(huán)節(jié),珍惜上機(jī)的時(shí)間,學(xué)時(shí)安排:32(講課)/8(實(shí)驗(yàn)) 成績(jī) = 平時(shí)成績(jī) + 考試成績(jī) 30% 70%,3,MATLAB語言 控制系統(tǒng)計(jì)算機(jī)仿真 Simulink動(dòng)態(tài)仿真集成環(huán)境 基于MATLAB的控制系統(tǒng)分析與設(shè)計(jì),本書內(nèi)容:,4,第一章 緒論,,,1.1系統(tǒng)建模與仿真,,1.2 Matlab相關(guān)知識(shí)簡(jiǎn)介,5,1.1系統(tǒng)建模與仿真,,1.1.1 系統(tǒng)、模型、仿真的基本概念 1.1.2 仿真軟件的發(fā)展?fàn)?/p>
2、況及應(yīng)用,6,1.1.1系統(tǒng)、模型、仿真的基本概念,系統(tǒng):系統(tǒng)是客觀世界中實(shí)體與實(shí)體之間相互作用、相互依賴所構(gòu)成的具有某種特定功能的有機(jī)體。 特點(diǎn):系統(tǒng)作為一個(gè)整體存在,各個(gè)部分、元素之間相互聯(lián)系、不可分割。,7,模型:系統(tǒng)模型是對(duì)實(shí)際系統(tǒng)的一種抽象,是對(duì)系統(tǒng)本質(zhì)(或是系統(tǒng)的某種特性)的一種描述。模型可視為對(duì)真實(shí)世界中的物體或過程的信息進(jìn)行形式化的結(jié)果。 特點(diǎn):模型具有與系統(tǒng)相似的特性,可以以各種形式給出我們感興趣的信息。 實(shí)體模型:與實(shí)物按一定比例制作的物理模型,如船模 數(shù)學(xué)模型: 原始系統(tǒng)數(shù)學(xué)模型:對(duì)系統(tǒng)的原始數(shù)學(xué)描述,如加速度、 概率密度函數(shù)等。 仿真系統(tǒng)數(shù)學(xué)模型:適合在計(jì)算機(jī)上演算
3、的數(shù)學(xué)模型。主要是根據(jù)計(jì)算機(jī)的運(yùn)算特點(diǎn)、仿真方式、計(jì)算方法、精度要求將原始數(shù)學(xué)模型轉(zhuǎn)換為計(jì)算機(jī)程序。,1.1.1系統(tǒng)、模型、仿真的基本概念,8,1.1.1系統(tǒng)、模型、仿真的基本概念,仿真:以相似性原理、控制論、信息技術(shù)及相關(guān)領(lǐng)域的有關(guān)知識(shí)為基礎(chǔ),以計(jì)算機(jī)和各種專用物理設(shè)備為工具,借助系統(tǒng)模型對(duì)真實(shí)系統(tǒng)進(jìn)行試驗(yàn)研究的一門綜合性技術(shù)。,9,仿真的作用: 仿真技術(shù)具有很高的科學(xué)研究?jī)r(jià)值和巨大的經(jīng)濟(jì)利益。由于仿真技術(shù)的特殊功效,特別是安全性和經(jīng)濟(jì)性,使得仿真技術(shù)得到廣泛的應(yīng)用。首先由于仿真技術(shù)在應(yīng)用上的安全性,使得航空、航天、核電站等成為方技術(shù)最早的和最主要的應(yīng)用領(lǐng)域。,1.1.1系統(tǒng)、模型、仿真的
4、基本概念,10,1.1.2 仿真軟件的發(fā)展?fàn)顩r及應(yīng)用,仿真軟件: 仿真軟件是一類面向仿真用途的專業(yè)軟件,它可能是面向通用的仿真,也可以是面向某個(gè)領(lǐng)域的仿真。功能如下: (1)為仿真提供算法支持。 (2)模型描述,用來建立計(jì)算機(jī)仿真模型。 (3)仿真實(shí)驗(yàn)的執(zhí)行和控制。 (4)仿真數(shù)據(jù)的顯示、記錄和分析。 (5)對(duì)模型、實(shí)驗(yàn)數(shù)據(jù)、文檔資料和其他仿真信息的存儲(chǔ)、檢索和管理(即用于仿真數(shù)據(jù)信息管理的數(shù)據(jù)庫(kù)系統(tǒng))。,11,1.1.2 仿真軟件的發(fā)展?fàn)顩r及應(yīng)用,根據(jù)軟件功能,仿真軟件可分為以下三個(gè)層次: (1)仿真程序庫(kù):有一組完成特定功能的程序組成的集合,專門面向某一問題或某一領(lǐng)域。它可能是用通用的語
5、言(C++、FORTRAN等)開發(fā)的程序軟件包,也可能是依附于某種集成仿真環(huán)境的函數(shù)庫(kù)或模塊庫(kù)。 (2)仿真語言:多屬于面向?qū)iT問題的高級(jí)語言,它是針對(duì)仿真問題,在高級(jí)語言的基礎(chǔ)上研制的。 (3)集成仿真環(huán)境:它是一組用于仿真的軟件工具的集合,包括設(shè)計(jì)、分析、編制系統(tǒng)模型、編寫仿真程序、創(chuàng)建仿真模型,運(yùn)行、控制、觀察仿真實(shí)驗(yàn),記錄仿真數(shù)據(jù),分析仿真結(jié)果,校驗(yàn)仿真模型等。,12,1.1.2 仿真軟件的發(fā)展?fàn)顩r及應(yīng)用,計(jì)算機(jī)仿真的一般過程: 第一步:根據(jù)仿真目的確定仿真方案 根據(jù)仿真目的確定相應(yīng)的仿真結(jié)構(gòu)和方法,規(guī)定仿真的邊界條件與約束條件。 第二步:建立系統(tǒng)的數(shù)學(xué)模型 根據(jù)系統(tǒng)的先驗(yàn)知識(shí)、實(shí)
6、驗(yàn)數(shù)據(jù)及機(jī)理研究,按照物理原理或者采用系統(tǒng)辨識(shí)的方法,確定模型的類型、結(jié)構(gòu)及參數(shù)。要確保模型的準(zhǔn)確性和經(jīng)濟(jì)性。,13,第三步:建立仿真模型 根據(jù)數(shù)學(xué)模型的形式、計(jì)算機(jī)類型、采用的高級(jí)語言或其它仿真工具,將數(shù)學(xué)模型轉(zhuǎn)換為能在計(jì)算機(jī)上運(yùn)行的程序或其它類型,獲得系統(tǒng)的仿真模型。 第四步:實(shí)驗(yàn) 設(shè)定實(shí)驗(yàn)環(huán)境、條件和記錄數(shù)據(jù),進(jìn)行實(shí)驗(yàn),并記錄數(shù)據(jù)。 第五步:進(jìn)行仿真實(shí)驗(yàn)并輸出仿真結(jié)果 通過實(shí)驗(yàn)對(duì)仿真系統(tǒng)模型及程序進(jìn)行校驗(yàn)和修改,然后按系統(tǒng)仿真的要求輸出仿真結(jié)果。,1.1.2 仿真軟件的發(fā)展?fàn)顩r及應(yīng)用,14,15,計(jì)算機(jī)仿真技術(shù)發(fā)展階段:1.硬件發(fā)展,1.1.2 仿真軟件的發(fā)展?fàn)顩r及應(yīng)用,模擬計(jì)算機(jī)
7、 - 數(shù)字計(jì)算機(jī) - 使用基于數(shù)字計(jì)算機(jī)的仿真軟件,說明:模擬計(jì)算機(jī)即模擬電子計(jì)算機(jī),其各個(gè)主要部件的輸入量及輸出量都是連續(xù)變化著的電壓、電流等物理量。模擬計(jì)算機(jī)由若干種作用及數(shù)量不同的積分器、加法器、乘法器、函數(shù)發(fā)生器等部件組成、按照待研究問題的數(shù)學(xué)模型把一個(gè)部件的輸出端與另一個(gè)或幾個(gè)部件的輸入端連接起來,用整個(gè)計(jì)算機(jī)的輸出量與輸入量之間的數(shù)學(xué)關(guān)系模擬所研究問題的客觀過程。,1.硬件發(fā)展,16,2.軟件發(fā)展,1.1.2 仿真軟件的發(fā)展?fàn)顩r及應(yīng)用,軟件包(software package) 類似windows或MATLAB工具箱中的文件夾。包括一個(gè)或一個(gè)系列具有一定功能的程序。軟件包由一個(gè)基
8、本配置和若干可選部件構(gòu)成。,早期的數(shù)學(xué)軟件包:針對(duì)數(shù)值計(jì)算 連續(xù)系統(tǒng)仿真語言CSSL(Continuous System Simulation Langusge) 連續(xù)系統(tǒng)建模語言CSMP( Continuous System Modeling Program) 微分分析器置換語言DARE(Differential Analyzer Replacement),17,1.1.2 仿真軟件的發(fā)展?fàn)顩r及應(yīng)用,ACSL仿真語言 需模型文件 提供命令進(jìn)行仿真、分析 直接調(diào)用FORTRAN 提供系統(tǒng)模塊,MATLAB/SIMULINK 免費(fèi)高功能仿真軟件,,18,1.2 Matlab相關(guān)知識(shí)
9、簡(jiǎn)介,,1.2.1 Matlab的發(fā)展歷程 1.2.2 Matlab語言的特色 1.2.3 Matlab的安裝 1.2.4 Matlab基礎(chǔ)操作,19,Cleve Moler和John Litter等人成立了一個(gè)名叫The MathWorks的公司,于1984年推出了第一個(gè)MATLAB的商業(yè)版,該版本已經(jīng)用C語言作出了修改。,1.2.1 MATLAB的發(fā)展歷程,1980年,美國(guó)新墨西哥州大學(xué)計(jì)算機(jī)主任Cleve Moler在講授線性代數(shù)課程時(shí),發(fā)現(xiàn)了用其他高級(jí)編程語言編程極為不便,便構(gòu)思開發(fā)了MATLAB(即Matrix Laboratory ,意為“矩陣實(shí)驗(yàn)室”),用Fortran語言編寫了
10、集命令翻譯、科學(xué)計(jì)算于一身的一套交互式軟件系統(tǒng)。,早期只能做矩陣運(yùn)算,內(nèi)部數(shù)十個(gè)函數(shù),簡(jiǎn)單的繪圖功能。其后又增添了豐富多彩的圖形圖像處理、多媒體功能、符號(hào)運(yùn)算和它與其他流行軟件的接口功能,使得 Matlab 的功能越來越強(qiáng)大。,20,Matlab的發(fā)展 1984年,Matlab 1.0版 (DOS版,182K,20來個(gè)函數(shù)) 1992年,Matlab 4.0版(93年推出Windows版本) 1994年,Matlab 4.2, 1999年,Matlab 5.3 2000年,Matlab 6.0, 2002年,Matlab 6.5 2004年,Matlab 7.0, 2006年,M
11、atlab2006a 2007年,Matlab2007a、b 2008年,Matlab2008a、b 最新版Matlab2011b(7.12),目前,Matlab 已經(jīng)成為國(guó)際上最流行的科學(xué)與工程計(jì)算的軟件工具,它已經(jīng)不僅僅是一個(gè)“矩陣實(shí)驗(yàn)室”了,而成為了一種具有廣泛應(yīng)用前景的全新的計(jì)算機(jī)高級(jí)編程語言了,有人稱它為“第四代”計(jì)算機(jī)語言。 就影響而言,至今仍然沒有一個(gè)別的計(jì)算軟件可與 Matlab 匹敵。,21,Matlab是一種廣泛應(yīng)用于工程計(jì)算及數(shù)值分析領(lǐng)域的新型高級(jí)語言,自1984年由美國(guó) MathWorks 公司推向市場(chǎng)以來,歷經(jīng)二十多年的發(fā)展與競(jìng)爭(zhēng),現(xiàn)已成為國(guó)際公
12、認(rèn)的最優(yōu)秀的工程應(yīng)用開發(fā)環(huán)境。Matlab功能強(qiáng)大、簡(jiǎn)單易學(xué)、編程效率高,深受廣大科技工作者的歡迎。,在歐美各高等院校,Matlab已經(jīng)成為線性代數(shù)、自動(dòng)控制理論、數(shù)字信號(hào)處理、時(shí)間序列分析、動(dòng)態(tài)系統(tǒng)仿真、圖像處理等課程的基本教學(xué)工具,成為本科生、碩士生以及博士生必須掌握的基本技能。,22,數(shù)值計(jì)算功能,Matlab是一個(gè)交互式軟件系統(tǒng) 給出一條命令,立即就可以得出該命令的結(jié)果,Matlab以矩陣作為基本單位,但無需預(yù)先指定維數(shù)(動(dòng)態(tài)定維) 按照IEEE的數(shù)值計(jì)算標(biāo)準(zhǔn)進(jìn)行計(jì)算 提供十分豐富的數(shù)值計(jì)算函數(shù),方便計(jì)算,提高效率 Matlab命令與數(shù)學(xué)中的符號(hào)、公式非常接近,可讀性強(qiáng),容易掌握,符
13、號(hào)運(yùn)算功能,和著名的 Maple 相結(jié)合,使得 Matlab 具有強(qiáng)大的符號(hào)計(jì)算功能,繪圖功能,Matlab 提供了豐富的繪圖命令,能實(shí)現(xiàn)一系列的可視化操作,1.2.2 Matlab的語言特色,23,24,1.2.3 Matlab的安裝,硬件要求 x86: 軟件要求 Windows: Linux: Adobe acrobat reader,25,學(xué)習(xí)途徑,參考書目: 基于MATLAB、Simulik的系統(tǒng)仿真技術(shù)與應(yīng)用 薛定宇 學(xué)習(xí)網(wǎng)站: 1.Matlab官方網(wǎng)站: 2.Matlab中國(guó): 3.MATLAB中文愛好者論壇: 4.Matlab中文論壇:,26,命令窗口,當(dāng)前工作目錄,當(dāng)
14、前工作空間,輸入命令的歷史記錄,命令 提示符,27,1.2.4 Matlab基礎(chǔ)操作,一、MATLAB語言的顯著特點(diǎn) 1、具有強(qiáng)大的矩陣運(yùn)算能力:Matrix Laboratory(矩陣實(shí)驗(yàn)室),使得矩陣運(yùn)算非常簡(jiǎn)單。 2、是一種演算式語言 MATLAB的基本數(shù)據(jù)單元是既不需要指定維數(shù),也不 需要說明數(shù)據(jù)類型的矩陣(向量和標(biāo)量為矩陣的特例), 而且數(shù)學(xué)表達(dá)式和運(yùn)算規(guī)則與通常的習(xí)慣相同。 因此MATLAB語言編程簡(jiǎn)單,使用方便。 例 exp2_1.m,28,二、MATLAB命令窗口 1、啟動(dòng)MATLAB命令窗口 計(jì)算機(jī)安裝好MATLAB之后,雙擊MATLAB圖標(biāo),就可以進(jìn)入命令窗口,此時(shí)意味著
15、系統(tǒng)處于準(zhǔn)備接受命令的狀態(tài),可以在命令窗口中直接輸入命令語句。 MATLAB語句形式 變量表達(dá)式; 通過等于符號(hào)將表達(dá)式的值賦予變量。當(dāng)鍵入回車鍵時(shí),該語句被執(zhí)行。語句執(zhí)行之后,窗口自動(dòng)顯示出語句執(zhí)行的結(jié)果。如果希望結(jié)果不被顯示,則只要在語句之后加上一個(gè)分號(hào)(;)即可。此時(shí)盡管結(jié)果沒有顯示,但它依然被賦值并在MATLAB工作空間中分配了內(nèi)存。,29,2、命令行編輯器 (1)方向鍵和控制鍵可以編輯修改已輸入的命令 :回調(diào)上一行命令 :回調(diào)下一行命令 (2)多行命令() 如果命令語句超過一行或者太長(zhǎng)希望分行輸入,則可以使用多行命令繼續(xù)輸入。 S=1-12+13+4+ 9-4-18;,,,
16、30,三、簡(jiǎn)單的數(shù)學(xué)運(yùn)算(例exp2_2.m) 1、常用的數(shù)學(xué)運(yùn)算符 ,,*(乘),/(右除),(左除),(冪) 在運(yùn)算式中,MATLAB通常不需要考慮空格;多條命令可以放在一行中,它們之間需要用分號(hào)隔開;逗號(hào)告訴MATLAB顯示結(jié)果,而分號(hào)則禁止結(jié)果顯示。 2、常用數(shù)學(xué)函數(shù) abs,sin,cos,tan,asin,acos,atan,sqrt,exp, imag,real,sign,log,log10,conj等 教材P16見表1-3,31,四、MATLAB的工作空間 1、MATLAB的工作空間包含了一組可以在命令窗口中調(diào)整(調(diào)用)的參數(shù) who:顯示當(dāng)前工作空間中所有變量的一個(gè)簡(jiǎn)單列表
17、例如:who 得到結(jié)果: your variable are: a ans b c d whos:則列出變量的大小、數(shù)據(jù)格式等詳細(xì)信息 clc:清屏,清除命令窗口中的內(nèi)容,不能刪除變量,32,clear :清除工作空間中所有的變量 clear 變量名:清除指定的變量,2、退出工作空間 quit 或 exit,33,五、文件管理 文件管理的命令,包括列文件名、顯示或刪除文件、顯示或改變當(dāng)前目錄等。(what、dir、type、delete、cd、which) what:顯示當(dāng)前目錄下所有與matlab相關(guān)的文件及它們的路徑。 dir:顯示當(dāng)前目錄下所有的文件 which:顯示某個(gè)文件的路
18、徑 cd path:由當(dāng)前目錄進(jìn)入path目錄 cd .. :返回上一級(jí)目錄 cd:顯示當(dāng)前目錄 type filename:在命令窗口中顯示文件filename delete filename:刪除文件filename,34,六、使用幫助 1、help命令,在命令窗口中顯示 MATLAB的所有函數(shù)都是以邏輯群組方式進(jìn)行組織的,而MATLAB的目錄結(jié)構(gòu)就是以這些群組方式來編排的。 help matfun :矩陣函數(shù)數(shù)值線性代數(shù) help general:通用命令 help graphics:通用圖形函數(shù) help elfun:基本的數(shù)學(xué)函數(shù) help elmat:基本矩陣和矩陣操作 help
19、datafun:數(shù)據(jù)分析和傅立葉變換函數(shù) help ops:操作符和特殊字符,35,help polyfun:多項(xiàng)式和內(nèi)插函數(shù) help lang:語言結(jié)構(gòu)和調(diào)試 help strfun:字符串函數(shù) help control:控制系統(tǒng)工具箱函數(shù) 2、helpwin:幫助窗口 3、helpdesk:幫助桌面,瀏覽器模式 4、lookfor命令:返回包含指定關(guān)鍵詞的那些項(xiàng) 5、demo:打開示例窗口,36,第二章 Matlab基礎(chǔ),37,2.1 數(shù)值計(jì)算 2.2 符號(hào)運(yùn)算 2.3 繪圖功能 2.4 程序設(shè)計(jì),38,2.1 數(shù)值計(jì)算,2.1.1 數(shù)值類型 變量命名 數(shù)據(jù)顯示 復(fù)數(shù)和復(fù)數(shù)矩陣 2.1.
20、2 矩陣運(yùn)算 創(chuàng)建矩陣 矩陣操作 矩陣運(yùn)算 向量運(yùn)算 多項(xiàng)式處理 2.1.3 數(shù)據(jù)分析與統(tǒng)計(jì) 2.1.4 函數(shù)方程 2.1.5 MATLAB解方程,39,變量命名 (1)基本的命名規(guī)則: 變量名必須是不包含有空格的單個(gè)詞; 變量名最多不超過19個(gè)字符,第19個(gè)字符之后的字符將被忽略; 變量名必須以字母打頭,之后可以是任意字符、數(shù)字或下劃線; 變量名區(qū)分大小寫。 M-book1 1_a M inute,2.1.1 數(shù)值類型,40,(2)變量操作 在命令窗口中,同時(shí)存儲(chǔ)著輸入的命令和創(chuàng)建的所有變量值,它們可以在任何需要的時(shí)候被調(diào)用。如要察看變量a的值,只需要在命令窗口中輸入變量的名稱即可:
21、 a (3)特殊變量,2.1.1 數(shù)值類型,41,Matlab中的特殊變量,42,MATLAB命令語句能即時(shí)執(zhí)行,它不是輸入完全部MATLAB命令語句經(jīng)過編譯、連接形成可執(zhí)行文件后才開始執(zhí)行,而是每輸入完一條命令,MATLAB就立即對(duì)其處理,并得出中間結(jié)果,完成了MATLAB所有命令語句的輸入,也就完成了它的執(zhí)行,直接便可得到最終結(jié)果。例如 a=5; b=6; c=a*b,,結(jié)果顯示 c= 30,43,MATLAB語句的間隔符:分號(hào) 間隔符的作用:當(dāng)有多個(gè)命令輸入時(shí),不立即顯示運(yùn)行的中間結(jié)果 MATLAB語句的結(jié)束符:逗號(hào)或回車 結(jié)束符的作用:立即顯示本條命令的結(jié)果,44,任何MA
22、TLAB的語句的執(zhí)行結(jié)果都可以在屏幕上顯示,同時(shí)賦值給指定的變量,沒有指定變量時(shí),賦值給一個(gè)特殊的變量ans,數(shù)據(jù)的顯示格式由format命令控制。 format只是影響結(jié)果的顯示,不影響其計(jì)算與存儲(chǔ);MATLAB總是以雙字長(zhǎng)浮點(diǎn)數(shù)(雙精度)來執(zhí)行所有的運(yùn)算。 format命令調(diào)用格式: format 控制參數(shù),數(shù)值顯示格式,45,format命令的控制參數(shù),46,復(fù)數(shù)和復(fù)數(shù)矩陣,MATLAB的矩陣元素可以是復(fù)數(shù)或復(fù)數(shù)表達(dá)式,在matlab 中,用i或j字元來表示虛部。 x=1-2*i 注意是2*i而不是2i real(x) 列出實(shí)部 imag(x) 列出虛部 conj(x)
23、 計(jì)算共軛復(fù)數(shù) abs(x) 計(jì)算復(fù)數(shù)大小 angle(x) 計(jì)算復(fù)數(shù)向量的夾角(弧度表示) y=exp(x) 以指數(shù)方式表示一個(gè)復(fù)數(shù),47,2.1.2 矩陣運(yùn)算,創(chuàng)建矩陣 1直接輸入法 最簡(jiǎn)單的建立矩陣的方法是從鍵盤直接輸入矩陣的元素。具體方法如下:將矩陣的元素用方括號(hào)括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號(hào)分隔,不同行的元素之間用分號(hào)分隔。 2利用M文件建立矩陣 對(duì)于比較大且比較復(fù)雜的矩陣,可以為它專門建立一個(gè)M文件。后面會(huì)通過一個(gè)簡(jiǎn)單例子來說明如何利用M文件創(chuàng)建矩陣。,48,矩陣生成不但可以使用純數(shù)字(含復(fù)數(shù)),也可以使用變量(或者說采用一個(gè)表達(dá)式)。,y=2,
24、4,5; 3 6 8 y= 2 4 5 3 6 8,a=1; b=2; c=3; x=5 b c; a*b a+c c/b x= 5.0000 2.0000 3.0000 2.0000 4.0000 1.5000,例2-1 在命令窗口中直接輸入矩陣,z=1,4,1+2*i z= 1.0000 4.0000 1.0000+2.0000*i,49,例2-2 利用M文件建立mymatrix矩陣。 啟動(dòng)有關(guān)編輯程序或MATLAB文本編輯器,并輸入待建矩陣: 把輸入的內(nèi)容以純文本方式存盤(設(shè)文件名為mymatrix.m)。 在MATLAB命令窗口中輸入mymatrix,即運(yùn)行該M文件,就
25、會(huì)自動(dòng)建立一個(gè)矩陣,可供以后使用。,50,3建立大矩陣 大矩陣可由方括號(hào)中的小矩陣或向量建立起來。 4利用冒號(hào)表達(dá)式建立一個(gè)向量 冒號(hào)表達(dá)式可以產(chǎn)生一個(gè)行向量,一般格式是 e1:e2:e3 其中,e1為初始值,e2為步長(zhǎng)(可以為負(fù)數(shù)),e3為終止值。 例如:a=1:2:10 a= 1 3 5 7 9,51,5. 使用函數(shù)產(chǎn)生矩陣 用linspace函數(shù)產(chǎn)生行向量 其調(diào)用格式為: linspace(a,b,n) 其中,a和b是生成向量的第一個(gè)和最后一個(gè)元素,n是元素總數(shù),缺省值為100。 例如:a=linspace(1,10,10) a= 1 2 3
26、4 5 6 7 8 9 10 顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價(jià)。,52,用logspace函數(shù)產(chǎn)生行向量 其調(diào)用格式為: a=logspace(a,b,n) 在對(duì)數(shù)空間上,行矢量的值從10a到10b,數(shù)據(jù)個(gè)數(shù)為n,缺省n為50。這個(gè)指令為建立為對(duì)數(shù)頻域軸坐標(biāo)提供了方便。 例如:a=logspace(1,3,3) a= 10 100 1000,53,一些常用的特殊矩陣 單位矩陣:eye(m,n); eye(m) 零矩陣:zeros(m,n); zeros(m) 一矩陣:ones(m,n); ones(m) 對(duì)角矩陣:對(duì)角
27、元素向量 V=a1,a2,,an A=diag(V) 隨機(jī)矩陣:rand(m,n)產(chǎn)生一個(gè)mn的0,1均勻分布的隨 機(jī)矩陣 伴隨矩陣:compan(p),其中p=1,a1,a2,,an為多項(xiàng)式 系數(shù)組成的向量 上三角矩陣:triu(A) 下三角矩陣:tril(A),54,空矩陣 當(dāng)一操作無結(jié)果時(shí), Matlab常返回一個(gè)空矩 陣,空矩陣大小為0,但 是確實(shí)存在于工作空間 中,可以用變量名訪問。 x=1:6; y=find(x6) size(y),隨機(jī)矩陣 如:在區(qū)間20,50內(nèi)均勻分布的5階隨機(jī)矩陣; 命令如下: x=20+(50-20)*rand(5),魔
28、方矩陣 magic(3),零矩陣 zeros(2,3) zeros(3),全1矩陣 ones(2,3) ones(2),單位矩陣 eye(3) eye(2,3),對(duì)角矩陣 提取向量元素構(gòu)成方陣的對(duì)角元素。 V=5 7 2; A=diag(V),伴隨矩陣 P為多項(xiàng)式的系數(shù)向量 p=1,0,-7,6; compan(p),55,矩陣操作 1、矩陣下標(biāo),A(m,n):提取第m行,第n列元素 A(:,n):提取第n列元素 A(m,:):提取第m行元素 A(m1:m2,n1:n2):提取第m1行到第m2行和第n1列到第n2列的所有元素(提取子矩陣)。 A(:):得到一個(gè)長(zhǎng)列矢量,該矢量的元素按矩陣的列進(jìn)
29、行排列。,56,實(shí)例 A=1,2,3;4,5,6;7,8,9; C=A(:); A(2,3)=5; B=A(2,1:3); A=A B; A(:,2)=;,,結(jié)果: A=1,3,4;4,5,5;7,9,5 B=4,5,5 C=1;4;7;2;5;8;3;6;9,57,矩陣擴(kuò)展:如果在原矩陣中一個(gè)不存在的地址位置上設(shè)定一個(gè)數(shù)(賦值),則該矩陣會(huì)自動(dòng)擴(kuò)展行列數(shù),并在該位置上添加這個(gè)數(shù),而且在其他沒有指定的位置補(bǔ)零。 例如: a=1,2,3;4,5,6; a(3,1)=9; 結(jié)果為: a= 1 2 3 4 5 6 9 0 0,58,2、矩陣的大小 m,n=size(A):
30、返回矩陣的行列數(shù)m與n, size(A,x):當(dāng)x=1,則只返回行數(shù)m,當(dāng)x=2,則只返回列數(shù)n。 x為向量時(shí),length(x):返回值為向量元素x的個(gè)數(shù)。 length(A)或max(size(A)):返回行數(shù)或列數(shù)的最大值。,a=1 2 3;3 4 5; m,n=size(a) m = 2 n = 3,length(a) ans = 3 max(size(a)) ans = 3,59,3、矩陣操作函數(shù):flipud;fliplr;rot90,rot90 矩陣旋轉(zhuǎn)函數(shù) rot90(A,k) 將矩陣A旋轉(zhuǎn)90的k倍,當(dāng)k=1的時(shí)候可以忽略,flipud矩陣上下翻轉(zhuǎn)函數(shù),fliplr矩陣左
31、右翻轉(zhuǎn)函數(shù),例如: a=1,2,3;4,5,6; rot90(a) 結(jié)果為: a= 3 6 2 5 1 4,60,1、矩陣的轉(zhuǎn)置 對(duì)于實(shí)矩陣用()符號(hào)或(.)求轉(zhuǎn)置結(jié)果是一樣的;然而對(duì)于含復(fù)數(shù)的矩陣,則()將同時(shí)對(duì)復(fù)數(shù)進(jìn)行共軛處理,而 (.)則只是將其排列形式進(jìn)行轉(zhuǎn)置。,矩陣的運(yùn)算,(1)基本運(yùn)算,61,a=1 2 3;4 5 6 a = 1 4 2 5 3 6,a=1 2 3;4 5 6. a = 1 4 2 5 3 6,b=1+2i 2-7i b = 1.0000 - 2.0000i 2.0000 + 7.0000i b=1+2i 2-7i
32、. b = 1.0000 + 2.0000i 2.0000 - 7.0000i,62,2、矩陣的加和減,矩陣的加減法的運(yùn)算符為“”和“”。矩陣 只有同階方可進(jìn)行加減運(yùn)算,標(biāo)量可以和矩陣 進(jìn)行加減運(yùn)算但應(yīng)對(duì)矩陣的每個(gè)元素施加運(yùn)算。 例如 A=1 2 3;4 5 6; B=A+1 B= 2 3 4 5 6 7 a=1 2 3;4 5 6;b=0 1 2;3 4 5;a-b ans= 1 1 1 1 1 1,63,3、矩陣的乘法,矩陣的乘法運(yùn)算符為“*”。 當(dāng)兩個(gè)矩陣中前一矩陣的列數(shù)和后一矩陣的行數(shù)相同時(shí),可以進(jìn)行乘法進(jìn)行運(yùn)算,這與數(shù)學(xué)上的形式是一致的。
33、 例如: CA*B; 在MATLAB中還可進(jìn)行矩陣和標(biāo)量相乘,其結(jié)果為標(biāo)量與矩陣中的每個(gè)元素分別相乘。,64,矩陣的除法有兩種運(yùn)算符“”和“/”,分別表示左除和右除。 x= AB是A*x=B的解, x=B/A是x*A=B的解, 通常ABB/A, 而AB=inv(A)*B, B/A= B*inv(A)。,4、矩陣的除法,65,矩陣的乘方運(yùn)算符為“”。 一個(gè)方陣的乘方運(yùn)算可以用AP來表示 。P為正整數(shù),則A的P次冪即為A矩陣自乘P次。如果P為負(fù)整數(shù),則可以將A自乘 P次,然后對(duì)結(jié)果進(jìn)行求逆運(yùn)算,就可得出該乘方結(jié)果。如果P是一個(gè)分?jǐn)?shù),例如Pmn,其中n和m均為整數(shù),則首先應(yīng)該將A矩陣自
34、乘n次,然后對(duì)結(jié)果再開m次方。 例如:A=1,2,3;4,5,6;7,8,9; A2; %等效于A*A A-2; %等效于inv(A*A),5、矩陣的乘方,66,4、了解矩陣超越函數(shù) 在MATLAB中exp、sqrt等命令也可以作用到矩陣上,但這種運(yùn)算是定義在矩陣的單個(gè)元素上的,即分別對(duì)矩陣的每一個(gè)元素進(jìn)行計(jì)算。 超越數(shù)學(xué)函數(shù)可以在函數(shù)后加上m而成為矩陣的超越函數(shù),例如expm(A),sqrtm(A),logm(A)分別為矩陣指數(shù)、矩陣開方和矩陣對(duì)數(shù)。 矩陣的超越函數(shù)要求運(yùn)算矩陣為方陣。,67,(2)矩陣的特殊運(yùn)算,1、方陣行列式:det(A) 2、方陣的逆:inv(A
35、) 3、矩陣的跡矩陣的對(duì)角線元素之和,也等于矩陣的特征值之和:trace(A) 4、矩陣的秩矩陣線性無關(guān)的行數(shù)(列數(shù)):rank(A) 5、矩陣的三角分解(LU分解)目的是將一個(gè)矩陣A分解成一個(gè)下三角矩陣L和一個(gè)上三角矩陣U的乘積,亦即可以寫成AL*U形式:L,U=lu(A),矩陣的特殊運(yùn)算包括以下內(nèi)容。,矩陣的運(yùn)算,68,6、矩陣的奇異值分解:cond(A) 7、矩陣的特征值與特征向量:eig(A) x= eig(A),求矩陣A的全部的特征值構(gòu)成向量x; V,D=eig(A),求矩陣A的全部特征值構(gòu)成對(duì)角陣 D,并求A的特征向量構(gòu)成V的列向量。 8、矩陣的特征多項(xiàng)式、特征方程和特征根: p=
36、poly(A),p為矩陣A的特征多項(xiàng)式系數(shù)組成的行向量 V=roots(p),根據(jù)矩陣的特征多項(xiàng)式求特征根,69,例2-4 求矩陣A=1 2 3;4 5 6;7 8 9的特征多項(xiàng)式及特征根。 程序如下: A=1 2 3;4 5 6;7 8 9; p=poly(A),V=roots(p) 結(jié)果: p=1.0000 -15.0000 -18.0000 -0.0000 V= 16.1168 -1.1168 -0.0000 也可直接用eig(A)求矩陣特征根,得到一樣的結(jié)果V,70,向量運(yùn)算,雖然在MATLAB中向量和矩陣在形式上有很多的一致性,但它們實(shí)際上遵循著不同的運(yùn)算規(guī)則。MATLA
37、B向量運(yùn)算符由矩陣運(yùn)算符前面加一點(diǎn)“.”表示,如“.*”、“./”和“.”等。,1. 向量的加減 向量的加、減運(yùn)算與矩陣的運(yùn)算相同,所以“”和“”既可被向量接收又可被矩陣接收。,71,2. 向量的乘法 向量乘法的操作符為“.*”。如果x,y兩向量具有相同的維數(shù),則x.*y表示x和y單個(gè)對(duì)應(yīng)元素之間的對(duì)應(yīng)相乘。例如 x=1 2 3; y=4 5 6;z=x.*y z=4 10 18 可見向量的輸入和輸出與矩陣具有相同的格式,但它們的運(yùn)算規(guī)則不同,例如,如果x是一個(gè)向量,則求取函數(shù)x平方時(shí)不能直接寫成x*x,而必須寫成x.* x,否則將給出錯(cuò)誤信息。,72,但是對(duì)于矩陣可以使用向量運(yùn)算符
38、號(hào),此時(shí)相當(dāng)于把矩陣看成了向量進(jìn)行運(yùn)算。例如對(duì)于兩個(gè)維數(shù)相同的A,B矩陣,A.*B表示A和B矩陣的相應(yīng)元素之間直接進(jìn)行乘法運(yùn)算把這種運(yùn)算稱為矩陣的點(diǎn)積運(yùn)算。 例如 A=1 2 3;4 5 6;7 8 9; B=2 3 4;5 6 7;8 9 0; C=A.*B;D=A*B; 結(jié)果:C= D= 2 6 12 36 42 18 20 30 42 81 96 51 56 72 0 126 150 84,73,3. 向量的除法 向量除法的操作符為“./ ”或“. ”。它們的運(yùn)算結(jié)果一樣。 x=1 2 3; y=4 5 6; z=y
39、./ x z=4.0000 2.5000 2.0000 對(duì)于向量x.y和y./x一樣,將得到相同的結(jié)果,這與矩陣的左、右除是不一樣的,因向量的運(yùn)算是它們對(duì)應(yīng)元素間的運(yùn)算。 對(duì)于矩陣也可使用向量的除法操作符,這時(shí)就相當(dāng)于把矩陣看成向量進(jìn)行運(yùn)算。,74,4. 向量的乘方 向量乘方的運(yùn)算符為“.”。向量的乘方是對(duì)應(yīng)元素的乘方,在這種底與指數(shù)均為向量的情況下,要求它們的維數(shù)必須相同。例如 x=1 2 3; y=4 5 6; z= x.y z= 1 32 729 它相當(dāng)于 z=1 2 3.4 5 6=14 25 36,75,在MATLAB中,多項(xiàng)式使用降冪系數(shù)的行向量表示,如:,p
40、=poly(r) p = 1 -12 -0 25 116,(1)多項(xiàng)式的建立與表示方法,r=roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i,表示為:p=1 -12 0 25 116,使用函數(shù)roots可以求出多項(xiàng)式等于0的根,根用列向量表示。若已知多項(xiàng)式等于0的根,函數(shù)poly可以求出相應(yīng)多項(xiàng)式。,多項(xiàng)式處理,76,將多項(xiàng)式的系數(shù)向量表示成相應(yīng)多項(xiàng)式的習(xí)慣表示形式的MATLAB函數(shù)為poly2str( ),函數(shù)的調(diào)用格式為f=poly2str(p,s ) 其中,p為多項(xiàng)式的系數(shù)向量,s為變量名,f
41、為相應(yīng)的多項(xiàng)式,例: p= 1 2 3 0 4; y=poly2str(p,x ) y = x4 + 2 x3 + 3 x2 + 4,77,(2)多項(xiàng)式的運(yùn)算,相加、減 f(x)=x4+5x3+3x+2,g(x)=x2+6x+5的命令: p1=1 5 0 3 2;p2=0 0 2 6 5;p=p1+p2 相乘conv a=1 2 3 ; b=1 2 c=conv(a,b)=1 4 7 6 conv指令可以嵌套使用,如conv(conv(a,b),c) 相除deconv q,r=deconv(c,b) q=1 2 3 整除多項(xiàng)式 r=0 0 0 余數(shù)多項(xiàng)式,78,求多項(xiàng)式函數(shù)值polyva
42、l(p,n):將值n代入多項(xiàng)式求解。 a=1 2 3 ;polyval(a,2)=11 多項(xiàng)式求導(dǎo)數(shù)函數(shù)polyder k=polyder(p)可得到多項(xiàng)式的導(dǎo)數(shù) 例如:p=5 1 8 5; y=poly2str(p, x) y= 5 x3 + x2 + 8 x + 5 k=polyder(p) k= 15 2 8,79,例2-5 求多項(xiàng)式 的展開式, p=conv(1 1,conv(1 1,1 6 5)); y=poly2str(p,x) y = x4 + 8 x3 + 18 x2 + 16 x + 5,例2-6 求多項(xiàng)式 在點(diǎn)x=5,7,9處的
43、值 p=3 2 1; f=polyval(p,5,7,9) f= 86 162 262,80,多項(xiàng)式的擬合 多項(xiàng)式擬合又稱為曲線擬合,其目的就是在眾多的樣本點(diǎn)中進(jìn)行擬合,找出滿足樣本點(diǎn)分布的多項(xiàng)式。這在分析實(shí)驗(yàn)數(shù)據(jù),將實(shí)驗(yàn)數(shù)據(jù)做解析描述時(shí)非常有用。 命令格式:p=polyfit(x,y,n),其中x和y為樣本點(diǎn)向量,n為所擬合的多項(xiàng)式的階數(shù),p為求出的多項(xiàng)式。 例exp2_15.m 多項(xiàng)式插值 多項(xiàng)式插值是指根據(jù)給定的有限個(gè)樣本點(diǎn),產(chǎn)生另外的估計(jì)點(diǎn)以達(dá)到數(shù)據(jù)更為平滑的效果。該技巧在信號(hào)處理與圖像處理上應(yīng)用廣泛。,81,所用指令有一維的interp1、二維的interp2、三維的in
44、terp3。這些指令分別有不同的方法(method),設(shè)計(jì)者可以根據(jù)需要選擇適當(dāng)?shù)姆椒?,以滿足系統(tǒng)屬性的要求。help polyfun可以得到更詳細(xì)的內(nèi)容。 yi=interp1(x,y,xi,method) 在有限樣本點(diǎn)向量x與y中,插值產(chǎn)生向量xi和yi,所用方法定義在method中,有4種選擇: nearest:執(zhí)行速度最快,輸出結(jié)果為直角轉(zhuǎn)折 linear:默認(rèn)值,在樣本點(diǎn)上斜率變化很大 cubic:最占內(nèi)存,輸出結(jié)果與spline差不多 spline:最花時(shí)間,但輸出結(jié)果也最平滑,82,例: x=-2 1 5 10 20; y=1 9 11 20 24; xi=3; yi=inte
45、rp1(x,y,xi, linear) yi= 10 例:exp2_16.m,83,2.1.3數(shù)據(jù)分析與統(tǒng)計(jì),隨機(jī)數(shù) 最大值和最小值 求和與求積 平均值和均值 累加和和累加積 標(biāo)準(zhǔn)差與方差 排序,84,隨機(jī)數(shù) rand(n,m)在0,1上產(chǎn)生一個(gè)nm的矩陣 randn(n,m) 生成一個(gè)nm的均值為0、標(biāo)準(zhǔn)差為1的正態(tài)分布的隨機(jī)矩陣 例: randn(2,3) ans = -0.4326 0.1253 -1.1465 -1.6656 0.2877 1.1909,85,最大值和最小值 1求向量的最大值和最小值 y=max(X):返回向量X的最大值存入y,如果X中包含復(fù)數(shù)元素,則按模
46、取最大值。 y,i=max(X):返回向量X的最大值存入y,最大值的序號(hào)存入i,如果X中包含復(fù)數(shù)元素,則按模取最大值。 求向量X的最小值的函數(shù)是min(X),用法和max(X)完全相同。,86,例2-7 求向量x的最大值。 命令如下: x=-43,72,9,16,23,47; y=max(x) %求向量x中的最大值 y,i=max(x) %求向量x中的最大值及其該 元素的位置 結(jié)果:y=72 y=72 i=2,87,2求矩陣的最大值和最小值 求矩陣A的最大值的函數(shù)有3種調(diào)用格式,分別是: (1) max(A):返回一個(gè)行向量,向量的第i個(gè)元
47、素是矩陣A的第i列上的最大值。 (2) Y,U=max(A):返回行向量Y和U,Y向量記錄A的每列的最大值,U向量記錄每列最大值的行號(hào)。 (3) max(A,,dim):dim取1或2。dim取1時(shí),該函數(shù)和max(A)完全相同;dim取2時(shí),該函數(shù)返回一個(gè)列向量,其第i個(gè)元素是A矩陣的第i行上的最大值。 求最小值的函數(shù)是min,其用法和max完全相同。,88,例2-8:分別求34矩陣x中各行和各列元素中的最大值和最小元素,并求整個(gè)矩陣的最大值和最小值。,A=rand(3,4); max(A,,2) min (A,,2) max(A) min(A) max(max(A)) min(min(A)
48、 ),89,3兩個(gè)向量或矩陣對(duì)應(yīng)元素的比較 函數(shù)max和min還能對(duì)兩個(gè)同型的向量或矩陣進(jìn)行比較,調(diào)用格式為: (1) U=max(A,B):A,B是兩個(gè)同型的向量或矩陣,結(jié)果U是與A,B同型的向量或矩陣,U的每個(gè)元素等于A,B對(duì)應(yīng)元素的較大者。 (2) U=max(A,n):n是一個(gè)標(biāo)量,結(jié)果U是與A同型的向量或矩陣,U的每個(gè)元素等于A對(duì)應(yīng)元素和n中的較大者。 min函數(shù)的用法和max完全相同。 例 求兩個(gè)23矩陣x, y所有同一位置上的較大元素構(gòu)成的新矩陣p。,p=max(x,y),90,求和與求積 設(shè)X是一個(gè)向量,A是一個(gè)矩陣,函數(shù)的調(diào)用格式為: sum(X):返回向量X各元素的和。
49、prod(X):返回向量X各元素的乘積。 sum(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列元素和。 prod(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的元素乘積。 sum(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于sum(A);當(dāng)dim為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的各元素之和。 prod(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于prod(A);當(dāng)dim為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的各元素乘積。,91,例 求矩陣A的每行元素的乘積和全部元素的乘積。,M=prod(A,2); prod(M);,92,平均值和中值 mean(X):返回向量X的算
50、術(shù)平均值。 median(X):返回向量X的中值。 mean(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的算術(shù)平均值。 median(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的中值。 mean(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于mean(A);當(dāng)dim為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的算術(shù)平均值。 median(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于median(A);當(dāng)dim為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的中值。,93,累加和與累乘積 cumsum(X):返回向量X累加和向量。 cumprod(X):返回向量X累乘積向量。 cumsum
51、(A):返回一個(gè)矩陣,其第i列是A的第i列的累加和向量。 cumprod(A):返回一個(gè)矩陣,其第i列是A的第i列的累乘積向量。 cumsum(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于cumsum(A);當(dāng)dim為2時(shí),返回一個(gè)矩陣,其第i行是A的第i行的累加和向量。 cumprod(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于cumprod(A);當(dāng)dim為2時(shí),返回一個(gè)向量,其第i行是A的第i行的累乘積向量。 例 求向量X=(1!,2!,,10!)的值。,X=cumprod(1:10),94,95,標(biāo)準(zhǔn)差與方差 1求標(biāo)準(zhǔn)差 std(X):對(duì)于向量X,返回一個(gè)標(biāo)準(zhǔn)差。 std(A):對(duì)于矩陣
52、A,返回一個(gè)行向量,它的各個(gè)元素便是矩陣A各列的標(biāo)準(zhǔn)差。 std(A, dim):當(dāng)dim=1時(shí),求各列元素的標(biāo)準(zhǔn)差;當(dāng)dim=2時(shí),則求各行元素的標(biāo)準(zhǔn)差。 2方差 var(X):對(duì)于向量X,返回一個(gè)方差。 var(A):對(duì)于矩陣A,返回一個(gè)行向量,它的各個(gè)元素便是矩陣A各列的方差。 var(A, dim):當(dāng)dim=1時(shí),求各列元素的方差;當(dāng)dim=2時(shí),則求各行元素的方差。,96,排序 sort(X):返回一個(gè)對(duì)X向量中的元素按升序排列的新向量。 sort(A,dim):若dim=1,則按列排;若dim=2,則按行排。,97,1.代數(shù)方程組求解 2.微分方程組求解 3.函數(shù)積分 4.函數(shù)繪
53、圖,2.1.4 函數(shù)方程,98,1、代數(shù)方程組求解,利用MATLAB中求函數(shù)f(.) =0的函數(shù)fzero()和fsolve(),可以很方便地求得非線性方程組的解,調(diào)用格式分別為 x=fzero(fun,x0) x=fsolve(fun,x0),前者針對(duì)一元方程求解,后者是對(duì)多元方程求解; fun表示函數(shù)名,x0表示函數(shù)的初值。x0為標(biāo)量時(shí),該命令在它兩側(cè)尋找一個(gè)與之最靠近的解;x0為區(qū)間a,b時(shí),在此區(qū)間內(nèi)尋找一個(gè)解。,99,例 試求函數(shù) 的零點(diǎn),命令如下: f=fzero(sin(x),0,pi),例 求f(x)=x-10 x+2=0在x0=0.5附近的根。 直接求根方法
54、:z=fzero(x-10 x+2,0.5) 用建立函數(shù)方法: (1) 建立函數(shù)文件funx.m。 function fx=funx(x) fx=x-10 x+2; (2) 調(diào)用fzero函數(shù)求根。 z=fzero(funx,0.5) z = 0.3758,100,MATLAB擁有大量的庫(kù)函數(shù),也允許用戶自定義 函數(shù),能同庫(kù)函數(shù)一樣使用,但不能像M文件一 樣,在命令窗口鍵入文件名來運(yùn)行,必須由其他語 句調(diào)用,且允許有多個(gè)輸入和輸出?;靖袷剑? function f1,f2,f3,=fun(x,y,z,) 函數(shù)體語句 其中,x,y,z,是形式輸入
55、參數(shù), f1,f2,f3,是返回的形 式輸出參數(shù),fun是函數(shù)名。 函數(shù)的調(diào)用格式與該函數(shù)一致: y1, y2, y3,=fun(a,b,c,) a,b,c,是實(shí)際輸入?yún)?shù), y1,y2,y3,是相應(yīng)的實(shí)際輸 出參數(shù)。,自定義函數(shù),101,例:編寫一個(gè)自定義函數(shù) 1.打開M-file編輯窗口,輸入函數(shù) function w=f(x,y,z) w=x.3-2*y.2-2.*z+5; 2.保存文件,命名為f.m 3.在命令窗口中輸入q=f(1,2,3),按enter鍵,則結(jié)果為q=-8 注意:函數(shù)名必須和保存的文本文件名相同。,102,例 試求一下非線性方程組的解,x,y,z初值均
56、為1,解:根據(jù)方程編寫函數(shù)exp2_19.m function q=exp2_19(p) q(1)=sin(p(1))+p(2)2+log(p(3))-7; q(2)=3*p(1)+2*p(2)-p(3)3+1; q(3)=p(1)+p(2)+p(3)-5;,調(diào)用f=fsolve(exp2_19,1 1 1),103,例 求下列非線性方程組在(0.5,0.5) 附近的數(shù)值解。 (1) 建立函數(shù)文件myfun.m。 function q=myfun(p) q(1)=p(1)-0.6*sin(p(1))-0.3*cos(p(2)); q(2)=p(2)-0.6*cos(p(1))+0.3*s
57、in(p(2)); (2) 在給定的初值x0=0.5,y0=0.5下,調(diào)用fsolve函數(shù)求方程的根。 x=fsolve(myfun,0.5,0.5) x = 0.6354 0.3734,104,將求得的解代回原方程,可以檢驗(yàn)結(jié)果是否正確,命令如下: q=myfun(x) q = 1.0e-009 * 0.2375 0.2957 可見得到了較高精度的結(jié)果。,105,函數(shù)極值 MATLAB提供了基于單純形算法求解函數(shù)極值的函數(shù)fminsearch ,用于單變量函數(shù)的最小值,其調(diào)用格式為: x=fminsearch(fname,x1,x2)
58、 x=fminsearch (fname,x0) 這兩個(gè)函數(shù)的調(diào)用格式相似。其中fminsearch函數(shù)用于求單變量函數(shù)的最小值點(diǎn)。fname是被最小化的目標(biāo)函數(shù)名,x1和x2限定自變量的取值范圍,x0是求解的初始值向量。,106,MATLAB沒有專門提供求函數(shù)最大值的函數(shù),但只要注意 到-f(x)在區(qū)間(a,b)上的最小值就是f(x)在(a,b)的最大值,所以 fminsearch(-f,x1,x2)返回函數(shù)f(x)在區(qū)間(x1,x2)上的最大值。,例 求f(x)=x3-2x-5在0,5內(nèi)的最小值點(diǎn)。 (1) 建立函數(shù)文件mymin.m。 function fx=mymin(
59、x) fx=x3-2*x-5; (2) 調(diào)用fminsearch函數(shù)求最小值點(diǎn)。 x= fminsearch(mymin,0,5) x= 0.8165,107,2、微分方程組求解,求解常微分方程的函數(shù)ode45( ),調(diào)用格式為: x=ode45(fun,t0,tf,x0,tol) fun為函數(shù)名, t0,tf為求解區(qū)間,x0為微分方程的初值, tol為指定的誤差精度,默認(rèn)值為10-3,例 求下列微分方程在初始條件 下的解,108,首先將微分方程寫成一階微分方程組 令,得,根據(jù)上述方程組編寫函數(shù)exp2_20.m function dx=exp2_20(t,x) dx
60、=x(2);(1-x(1)2)*x(2)-x(1);,利用以下的MATLAB命令,即可求解得到微分方程在(0,30) 時(shí)間區(qū)間上的解曲線, t,x=ode45(exp2_20,0,30,1;0); plot(t,x(:,1),t,x(:,2));xlabel(t);ylabel(x),109,110,3、函數(shù)積分,變步長(zhǎng)辛普生法:基于變步長(zhǎng)辛普生法,MATLAB給 出了quad函數(shù)來求定積分。該函數(shù)的調(diào)用格式: y=quad(fname,a,b,tol,trace) 其中fname是被積函數(shù)名。a和b分別是定積分的下 限和上限。tol用來控制積分精度,缺省時(shí)取 tol=0.001。trac
61、e控制是否展現(xiàn)積分過程,若取非0 則展現(xiàn)積分過程,取0則不展現(xiàn),缺省時(shí)取trace=0。 返回參數(shù)y即定積分值。,111,例 求定積分 (1) 被積函數(shù)文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x)); (2) 調(diào)用函數(shù)quad求定積分。 I=quad(fx,0,pi) I = 2.4674,112,例: 試求下列積分的解,根據(jù)積分編寫函數(shù)exp2_21.m function f=exp2_21(x) f=1/sqrt(2*pi)*exp(-x.2/2);,通過下面語句可求得所需函數(shù)的積分, y=quad(exp2_2
62、1,-15,15),113,4、函數(shù)繪圖,MATLAB用fplot( )或ezplot( )來直接繪出函數(shù)的圖形,調(diào)用格式為 fplot(f,a,b,N) ezplot(f,g,a,b,N) 其中,f,g為函數(shù)名,它既可以為自定義的任意 M函數(shù),也可以為基本的數(shù)學(xué)函數(shù);a,b為繪圖 區(qū)間;N為點(diǎn)數(shù),默認(rèn)時(shí)取N=25。, fplot(sin,0,2*pi)等同于 t=0:2*pi/25:2*pi;y=sin(t);plot(t,y),114,115,ezplot(sin(3*t)*cos(t),sin(3*t)*sin(t),0,2*pi),116,2.2 符號(hào)計(jì)算,2.2.1 符號(hào)對(duì)象 2.2
63、.2 符號(hào)微積分 2.2.3 級(jí) 數(shù) 2.2.4 符號(hào)方程求解,117,2.2.1 符號(hào)對(duì)象,建立符號(hào)對(duì)象 1建立符號(hào)變量和符號(hào)常量 函數(shù):sym和syms,兩個(gè)函數(shù)的用法不同。 (1) sym函數(shù) sym函數(shù)用來建立單個(gè)符號(hào)量,一般調(diào)用格式為: 符號(hào)量名=sym(符號(hào)字符串) 該函數(shù)可以建立一個(gè)符號(hào)量,符號(hào)字符串可以是常量、變 量、函數(shù)或表達(dá)式。 在matlab可以自動(dòng)確定變量類型的情況下,可不用sym( )函 數(shù)來生成符號(hào)表達(dá)式。但在建立符號(hào)數(shù)組時(shí),必須用sym( ) 函數(shù)來將字符串轉(zhuǎn)換成符號(hào)表達(dá)式。,118,fun=my name is; %用一對(duì)單引號(hào)生成字符串 sym(si
64、n(x)); %生成符號(hào)表達(dá)式 A=sin(x) b;c d; 結(jié)果A = sin(x) b;c d %結(jié)果為一串字符串 A=sym(sin(x) b;c d); 結(jié)果A = sin(x), b c, d %結(jié)果為22的符號(hào)矩陣,119,(2) syms函數(shù) MATLAB提供了另一個(gè)函數(shù)syms,一次可以定義多個(gè)符號(hào) 變量。syms函數(shù)的一般調(diào)用格式為: syms 符號(hào)變量名1 符號(hào)變量名2 符號(hào)變量名n 用這種格式定義符號(hào)變量時(shí)不要在變量名上加字符串分界 符(),變量間用空格而不要用逗號(hào)分隔。,120,2建立符號(hào)表達(dá)式 含有符號(hào)對(duì)象的表達(dá)式稱為符號(hào)表達(dá)式。建立符
65、號(hào)表達(dá)式有以下3種方法: (1)利用單引號(hào)來生成符號(hào)表達(dá)式。 (2)用sym函數(shù)建立符號(hào)表達(dá)式。 (3)使用已經(jīng)定義的符號(hào)變量組成符號(hào)表達(dá)式。,tan(y/x) x3-2*x2+3 1/cos(angle)+2,sym(tan(y/x)) sym(x3-2*x2+3) sym(1/cos(angle)+2),syms K t T; fun=K*(exp(-t/T)),121,f1=a*x2+b*x+c f2=a*x2+b*x+c=0 f3=Dy+y2=1 U=sym(3*x2+5*y+2*x*y+6) syms x y V=3*x2+5*y+2*x*y+6,%二次三項(xiàng)式 %方程 %微分方程 %
66、定義符號(hào)表達(dá)式U %建立符號(hào)變量x y %定義符號(hào)表達(dá)式,122,符號(hào)表達(dá)式運(yùn)算 1符號(hào)表達(dá)式的四則運(yùn)算 符號(hào)表達(dá)式的加、減、乘、除運(yùn)算可分別由函數(shù)symadd、 symsub、symmul和symdiv來實(shí)現(xiàn),冪運(yùn)算可以由sympow來實(shí) 現(xiàn)。 2符號(hào)表達(dá)式的提取分子和分母運(yùn)算 如果符號(hào)表達(dá)式是一個(gè)有理分式或可以展開為有理分式, 可利用numden函數(shù)來提取符號(hào)表達(dá)式中的分子或分母。其一 般調(diào)用格式為: num,den=numden(f) 該函數(shù)提取符號(hào)表達(dá)式f的分子和分母,分別將它們存放在 num與den中。, f=sym((x+d)/(a*x2+b*x+c)); num,den=numden(f),123,3符號(hào)表達(dá)式的因式分解與展開 MATLAB提供了符號(hào)表達(dá)式的因式分解與展開的函數(shù),函數(shù) 的調(diào)用格式為: factor(s):對(duì)符號(hào)表達(dá)式s分解因式。 expand(s):對(duì)符號(hào)表達(dá)式s進(jìn)行展開。 collect(s):對(duì)符號(hào)表達(dá)式s合并同類項(xiàng)。 collect(s,v):對(duì)符號(hào)表達(dá)式s按變量v合并同類項(xiàng)。,syms x y; s=(-7*x2-8*y2)*(-
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案