




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MATLAB語言基礎廣東工業大學自動化學院李明系統仿真與MATLAB引言形而上者謂之道,形而下者謂之器
——《易經·系辭》所謂“道”者,是指從具體實踐活動中總結、提取概括出來的具有普適性的規律?
認識世界所謂“器”者,則是在特定規律下制造出來的用于某種目的的工具?
改造世界控制系統設計→道MATLAB→器MATLAB初識MATLAB為何
MATLAB是美國MathWorks公司出品的商業數學軟件,用于算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分。
MATLAB是矩陣實驗室(MatrixLaboratory)的簡稱,和Mathematica、Maple并稱為三大數學軟件。它在數學類科技應用軟件中在數值計算方面首屈一指。
MATLAB可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。
MATLAB何用MATLAB產品族主要應用于工程計算與科學繪圖控制系統的分析與設計
數字圖像處理數字信號處理通訊系統設計財務與金融工程附加的工具箱(單獨提供的專用MATLAB函數集)擴展了MATLAB環境,以解決這些應用領域內的問題MATLAB的產生與發展產生MATLAB誕生于20世紀70年代,其首創者是時任新墨西哥大學教授Cleve
Moler及其同事,他們意識到在講述諸如線性代數等課程時,已有的編程語言比如Fortran和C語言已經不能滿足需求,為了降低編程方面的負擔,CleveMoler基于他自己使用Fortran語言編寫的用于求解線性方程的子程序庫——基于特征計算的程序庫EISPACK和線性代數程序庫LINPACK,開發了MATLAB的雛形發展MATLAB是集命令翻譯、科學計算于一身的一套交互式軟件系統,最初作為免費軟件在大學里廣泛使用,功能也比較簡單,只能進行矩陣運算和簡單的繪圖,但是因為在MATLAB中矩陣運算變得異常簡單,不需要用其他高級語言編寫矩陣運算程序庫,因而受到廣大工程專業大學生的青睞,也正是因為在控制分析和信號處理等工程領域中非常強調矩陣的運算和分析,才促使CleveMoler對MATLAB進行繼續開發,并于1984年與JackLittle等一起創辦了MathWorks公司,把MATLAB推向市場。自公司開創以來,MathWorks不斷致力于版本的更新和軟件各方面功能的增強歷經多年的發展,MATLAB長于數值計算,能處理大量的數據,而且效率比較高。MathWork公司在此基礎上加強了MATLAB的符號計算、文字處理、可視化建模和實時控制能力,增強了MATLAB的市場競爭力,使MATLAB成為了市場主流的數值計算軟件。到20世紀90年代,MATLAB已成為國際控制界的標準計算軟件。MATLAB的優勢強大易用的科學計算語言MATLAB之所以能迅速發展的一個重要原因就是MATLAB的使用簡潔直觀,符合人們的思維習慣,易于理解和學習。矩陣運算,例如矩陣乘積,矩陣求逆等等;用C則比較復雜求線性代數方程Ax=b的解,x=A\b針對許多專門的領域,將工程科學界重要的問題通過軟件制作成工具箱全面的圖形功能一般數據可視化軟件的功能,例如二維圖形和三維圖形的可視化、圖像處理、動畫和表達式作圖等添加了軟件獨有的圖形的光照處理、色度處理以及四維數據的表現等圖形用戶界面(GUI)的制作上作了很大的改善獨立開放的平臺和實用的程序接口支持多種計算機操作系統,提供了大量的平臺獨立的措施利于平臺之間移植MATLAB和Fortran、C和Basic之間都可以方便的實現連接強大的動態系統仿真功能MATLAB界面MATLAB窗口(1)命令窗口(CommandWindow)三個藍色的入門鏈接“>>”為命令提示符,此時我們可以在>>之后輸入一些基本命令,例如數值運算命令,然后按下Enter鍵,MATLAB則會在命令窗口立即顯示結果,并將結果自動賦予變量名ansMATLAB允許一行輸入多個命令,此時可以用逗號“,”和分號“;”來實現,區別在于使用逗號時將會顯示運行結果,使用分號時運行結果將予以隱藏>>3.14*3^2 %采用直接演算法,類似于計算器ans=28.2600>>r=3 %采用變量賦值的方法,圓的半徑r=3r=3>>S=3.14*r^2 %求圓的面積SS=28.2600>>r=3;S=3.14*r^2 %使用分號禁止顯示計算的中間結果S=28.2600
MATLAB窗口(2)歷史命令窗口(CommandHistory)歷史命令窗口用于記錄用戶在命令窗口執行過的命令行。包括已運行過的命令、函數、表達式、使用時間等信息。在歷史命令窗口的命令是按逆序排列的。即最早的命令在排在最下面,最后的命令排在最上面。在歷史命令窗口可進行命令歷史的查找、檢查等工作。用鼠標選中歷史命令窗口中的命令行,單擊右鍵彈出操作菜單,我們可以選擇相應菜單項對這些歷史命令進行各種操作如:復制(Copy)執行(Evaluateselection)刪除(Deleteselection)雙擊(Doubleclick)這些命令可使它再次執行。MATLAB窗口(3)工作間管理窗口(Workspace)工作空間是用于儲存運算中的各種變量和結果的內存空間,而工作空間窗口則用于顯示變量的名稱、大小、字節數及數據類型等;我們可以通過工作空間窗口對變量進行觀察、編輯、保存和刪除等操作,有命令行和變量編輯器(VariableEditor)兩種方式工作空間管理窗口中命令行方式的主要命令命令功能who顯示存儲在工作空間全部變量的名稱whos顯示存儲在工作空間全部變量的名稱、大小、數據類型等詳細信息clear從工作空間中清除變量和函數save保存工作空間變量load從磁盤文件中讀取變量到工作空間lengthlength(A),若A向量則顯示其長度,若A為矩陣則顯示行數與列數中的較大數sizesize(A),得到矩陣A的行數和列數disp顯示變量MATLAB窗口(4)當前路徑窗口(CurrentDirectory)MATLAB的當前目錄窗口(CurrentDirectory)用于顯示及設置當前工作目錄,同時顯示當前工作目錄下的文件名、文件類型及目錄的修改時間等信息。用鼠標選中文件,單擊右鍵可以進行打開(Open)、運行(RunFile)、重命名(Rename)、刪除(Delete)等操作,只有在當前目錄或搜索路徑下的文件及函數才可以被MATLAB運行或調用。設置當前目錄可以在當前目錄窗口上方的輸入欄中直接輸入,或點擊瀏覽器下拉按鈕進行選擇。MATLAB的路徑搜索什么是搜索路徑專門用于查找“.m”文件的路徑搜索器,為一系列文件路徑的組合,缺省狀態下包括當前路徑和已安裝的全部工具箱的路徑。如果調用的函數或文件在搜索路徑之外,MATLAB會認為此函數或文件不存在而返回錯誤信息。一般而言,當在命令窗口輸入一個字符串時,MATLAB按下列順序開始搜索:在工作空間中搜索是否有以該字符串為變量名的變量,有則返回該變量的值;搜索是否有同名的MATLAB內部函數,若有,執行該內部函數;在當前目錄中查找與該字符串同名的M文件,若有,執行該文件;在搜索目錄中查找與該字符串同名的M文件,若有,執行該文件;如果在搜索目錄中存在多個同名函數,則只執行搜索路徑中的第一個函數,其他函數不再執行。MATLAB的路徑搜索搜索路徑>>path (列出所有搜索路徑)>>editpath (進入搜索路徑對話框)>>pathtool (進入搜索路徑對話框)對話框中的設置方法用AddFolder…按鈕可以將某一目錄加入搜索路徑而忽略其子目錄,選擇AddwithSubfolder…按鈕可將選中目錄的子目錄也包括在搜索路徑中,一般情況下選擇后者,此時系統會彈出“瀏覽文件夾”對話框,我們選擇好了目錄之后單擊“確定”,則新目錄會出現在搜索路徑中。MATLAB的幫助系統HelpDesk該窗口是一個獨立的交互式幫助瀏覽器,用戶可以在命令窗口中輸入helpdesk或helpwin來啟動幫助窗口。通過幫助窗口中的幫助主題(Contents)、幫助索引(Index)和聯機演示(Demos)可以瀏覽用戶可能需要的內容,而在查詢結果(SearchResults)中可以查看按用戶要求得到的幫助信息列表
>>helpdesk >>helpwin >>docHelpDesk是HTML格式的幫助文檔,HelpDesk的搜索可以使用不完全關鍵字,MATLAB里包含了大量關于MATLAB安裝、使用、編程以及各種工具箱等的電子版手冊,具有搜索功能,因此也可以在指定的手冊中搜索關鍵字,使用非常方便。MATLAB的幫助系統help命令當用戶知道函數名稱想了解其具體用法時,可以在命令窗口使用help命令,調用方法是help函數名,例如想了解矩陣求逆函數inv()的用法,可以在命令窗口輸入help命令
>>helpinvlookfor命令lookfor命令與help不同,help命令要求函數名的精確匹配,而lookfor只要求與每個函數中的總結信息有匹配。所以當用戶不知道函數的確切名稱時可以使用lookfor命令,此時只需知道函數的部分關鍵字,調用格式為lookfor
關鍵字。例如若用戶不知道MATLAB中矩陣求逆的函數,而求逆函數的關鍵字為inverse,則可以在命令窗口輸入如下命令:
>>lookforinverse根據列出命令的總結信息,可以找到矩陣求逆的函數為inv-Matrixinverse。MATLAB基本使用方法MATLAB中的數據類型(1)數值型數據通常以雙精度數值來表示,不區分整數、實數、復數等虛數單位i=sqrt(-1),復數z=a+b*i或z=r*exp(i*θ),且注意當復數的虛部為一個確定的數(而不是變量或者矩陣)時,可以省略系數和虛數單位之間的“*”,即3+i*6可以寫成3+6i,但是x+i*y不能寫成x+yi;當復數作為矩陣元素時,復數內不能留有空格,否則可能會被當作兩個元素處理而出錯。例如k1為一向量,但是k2則是一個矩陣。>>k1=[3+4i;5+6i]k1=3.0000+4.0000i5.0000+6.0000i>>k2=[3+4i;5+6i] %復數作為矩陣元素時,復數內不能留有空格k2=3.00000+4.0000i5.00000+6.0000iMATLAB中的數據類型(2)符號型數據
符號型數據則是在MATLAB中定義的特殊變量,它以字符串的形式表示,但又不同于普通字符串。其變量、表達式均為符號對象。符號對象使用sym或者syms生成,語法格式為
>>symsarg1arg2….arg_props
符號對象命令舉例
>>symsxy; %利用syms生成符號對象
>>z=sym(‘z’); %利用sym生成符號對象 >>symspreal; %聲明符號對象p為實的
>>m=sym('m','real'); %聲明符號對象m為實的
>>n=sym('n','positive'); %聲明符號對象n為正的
>>m=sym('m','unreal'); %去掉m的附加屬性
>>A=[1x;yz] %生成符號矩陣
>>f=sin(x)+cos(x); %建立符號表達式MATLAB中的數據類型(3)字符串型數據MATLAB作為一種高級語言,字符串運算功能也是很豐富的,字符串就是字符數組,在字符串里的每個字符是數組里的一個元素,字符串中空格也是字符,由于字符串是以向量的形式來存儲的,因而可以通過它的下標對字符串中的任何一個元素進行訪問在MATLAB增加了符號運算工具箱,字符串成為符號運算表達式的基本構成單位舉例
>>s1='MATLABSTRING'; %生成字符串s1>>dim=size(s1) %顯示s1的維數,1×13階矩陣dim=13>>s2=['MATLABSTRING']; %生成字符數組s2,與s1等價>>s1(2); %通過下標訪問字符串,ans=AMATLAB中的數據類型(4)多維數組
數組也可以嵌套,一個數組的元素可以是另外一個數組,這樣就構成了多維數組,例如三維數組就是一般矩陣的拓展,可以直接用于彩色圖像的描述,在實際編程中可能用到更高維的數組。如圖所示即為一個三維數組的示意圖,數組的第一維稱為“行”,第二維稱為“列”,第三維稱為“頁”,運算則與低維的類似。
>>A=[12;13];>>B(:,:,1)=A; %輸入矩陣B的第一頁
>>B(:,:,2)=A^2; %輸入矩陣B的第二頁
>>B(:,:,3)=A^2; %輸入矩陣B的第三頁>>C=ones(2,2,3); %矩陣C為為2×2×3維全1矩陣>>D=C./B %三維矩陣間的./運算D(:,:,1)=1.00000.50001.00000.3333D(:,:,2)=0.33330.12500.25000.0909D(:,:,3)=0.33330.12500.25000.0909MATLAB中的數據類型(5)元胞數組存儲形式類似于矩陣,元胞數組的各元素不一定是數值,可以是MATLAB支持的任意存儲類型,并且各元素的類型也可以不盡相同。其元素就被稱為“元胞”(cell)。元胞數組也用下標標識,但元胞數組中有元胞元素和元胞元素的內容兩個概念,用圓括號表示元胞元素,用大括號來包含元胞元素的內容,cell_array{i,j}即表示元胞數組cell_array的第i行,第j列的存儲內容,亦即元胞元素cell_array(i,j)的內容。>>A=[25;42]; %矩陣的定義使用[]>>B={A,[69];'test',[16;74]} %元胞數組的定義使用{}B= %僅顯示存儲量類型
[2x2double][1x2double]'test'[2x2double]>>C(1,1)={[13;57]}; %C(1,1)代表元胞元素,其內容是一矩陣>>C{1,2}=[24;68]; %C{1,2}代表C(1,2)的內容,為一矩陣>>celldisp(C) %顯示元胞數組C的具體內容MATLAB中的數據類型(6)結構型數組結構型數組與元胞數組類似,不同之處在于結構型數組利用指針方式傳遞數據。在結構數組的直接賦值定義過程中,需要指出結構中的屬性名,并且以指針操作符“.”來連接結構型數組與屬性名,在命令行提示符后輸入結構型數組的名稱,則可顯示其屬性以及屬性值
>>student_1.name='lin
hong';>>student_1.stature=182;>>student_1.weight=79;>>student_1student_1=name: 'linhong'stature: 182weight: 79MATLAB中的變量變量命名規則變量名由一個字母導引,后面可以跟字母、數字、下劃線等,但不能用空格或者標點符號。例如var_temp、control_input1、state21均是合法變量名,而_output、45time、@position等均是非法變量名。變量名不能是MATLAB的保留字,例如for、end、while、if等命令名。MATLAB中的變量名是大小寫敏感的,即A和a代表不同的變量。變量名長度不能超過63位。變量的定義和賦值方式為:賦值變量=賦值表達式變量是MATLAB的基本元素之一,但其用法的特殊之處在于:MATLAB表達式中可以使用矩陣形式MATLAB中不需要預先聲明變量的類型和維數,MATLAB會根據對新變量的操作創建該變量,確定其類型并為其分配存儲空間對已經存在的變量的賦值操作,MATLAB會以新值代替舊值。如果需要的話,MATLAB可以改變該變量的類型(例如將字符串型數據賦給原數值型數據變量時)或者為其分配新的存儲空間(例如當矩陣維數發生變化時)MATLAB中的常量常量常量是一些在MATLAB中預先定義好數值的變量,既然其本質是變量,就可以對其進行重新賦值,但在編程時,為了避免不必要的麻煩,請盡量避免對這些特定常量的重新賦值。表中就是一些MATLAB中的常量。常量名用法pi圓周率πeps機器的浮點運算誤差限,2.2204e-016,若|x|<eps,則可以認為x=0i,j虛數單位narginm函數入口參數變量,用于m函數程序設計nargoutm函數出口參數變量,用于m函數程序設計realmin最小的正浮點數2.2251e-308realmax最大的正浮點數1.7977e+308bitmax最大的正整數9.0072e+015InfInfinity,無窮大量+∞NaNNot-a-number,通常由0/0運算、Inf/Inf運算或者其他可能運算得出ans默認結果存儲變量MATLAB中的矩陣矩陣和向量數學上,一個m行n列的矩形陣列被稱為一個m×n矩陣,矩陣一般由數組成。特別的,標量可看作是1×1的矩陣,列向量可看作是n×1的矩陣,而行向量則是1×n的矩陣。矩陣定義矩陣是MATLAB中的一種基本運算對象。在MATLAB語言中不必描述矩陣的維數和類型,它們是由輸入的格式和內容來確定的矩陣操作MATLAB可以根據用戶的需要以直接輸入、命令行語句、函數構造等方式生成特定的矩陣,同時還可以通過提取或者擴充等方式對已有矩陣進行相關的操作矩陣生成(1)以直接輸入的方式生成矩陣
矩陣元素必須在“[]”內矩陣的同行元素之間用空格(或“,”)隔開;矩陣的行與行之間用“;”(或回車符)隔開;矩陣的元素可以是數值、變量、表達式或函數。
>>A=[12345]; %生成行向量,同行元素之間用空格隔開
>>A=[1,2,3,4,5]; %生成行向量,同行元素之間用,隔開
>>B=[1;2;3;4;5]; %生成列向量>>A=[294;753;618]; %三階幻方矩陣輸入方式1>>A=[2,9,4;7,5,3;6,1,8]; %三階幻方矩陣輸入方式2>>A %顯示輸入的矩陣A=294753618>>C=[1+9i2+8i3+7i;4+6i5+5i6+4i;7+3i8+2i9+i];%復數矩陣的直接輸入矩陣生成(2)以命令行語句或函數方式生成矩陣冒號表達式產生一個行向量Vec=start:step:end
(step默認為1)
>>Vec=0:2:8; %[0,2,4,6,8] >>Vec=1:3;
%[1,2,3],默認step=1linspace()生成線性等間距格式行向量linspace(start,end,num),其中start和end是生成向量的第一個和最后一個元素,num是元素總數。等價于a:(b-a)/(n-1):b >>Vec=linspace(0,3,4); %[0,1,2,3],遞增 >>Vec=linspace(5,2,4); %[5,4,3,2],遞減logspace()生成等比格式行向量,Vec=logspace(start,end,num),創建從10start開始,到10end結束,有num個元素的對數分隔行向量。默認num=50,該命令等價于10.^linspace(start,end,num)
>>Vec=logspace(0,3,4) %[1,10,100,1000] >>Vec=logspace(2,0,3) %[100,10,1]矩陣生成(3)特殊的矩陣生成函數ones()生成全1矩陣,zeros()生成生全0矩陣,eye()生成單位陣>>A=ones(3) %生成3×3維全1矩陣>>A=ones(2,3) %生成2×3維全1矩陣>>A=zeros(2) %生成2×2維全0矩陣>>A=zeros(3,2) %生成3×2維全0矩陣>>A=eye(3) %生成3×3維單位陣
>>A=eye(3,5)>>A=eye(5,3)rand()生成隨機矩陣,元素滿足在(0,1)區間內的均勻分布
>>A=rand(3) %生成3×3維rand()隨機矩陣
>>A=rand(2,3) %生成2×3維rand()隨機矩陣randn()生成隨機矩陣,元素滿足均值為0,方差為1的標準正態分布
>>A=randn(3) %生成3×3維randn()隨機矩陣
>>A=randn(2,3) %生成2×3維randn()隨機矩陣矩陣的訪問與賦值向量的訪問向量是有多個有序元素組成的,因而可以直接通過向量的下標來對向量中的元素進行訪問和修改,Vec(i)即表示向量Vec中的第i個元素。特別提出的是,可以通過冒號表達式對向量元素進行訪問,也可以用中括號方式任意指定多個向量元素進行訪問。
>>Vec=rand(1,6); %生成一個1×6的隨機行向量
>>Vec(3); %通過下標訪問向量的第3個元素
>>Vec(5)=0; %通過下標修改向量第5個元素的值,賦值為0>>Vec(2:4); %訪問向量的第2個到第4個元素
>>Vec(2:2:6); %訪問向量的第2、4、6個元素
>>Vec([134]); %中括號訪問多個指定的向量元素
>>Vec([13])=[00]; %修改多個指定的向量元素的值
>>Vec(4:end); %end參數表示結尾矩陣的訪問A(i,j)表示A中第i行、第j列的元素(一維下標為按列方式)
>>A=[417;256;389] %生成一個3×3的矩陣
>>A(3,3) %訪問A的第3行第3列的元素
>>A(3,2)=0 %修改A的第3行第2列的元素矩陣的拆分和提取(1)矩陣的拆分冒號表達式A(:,j) —A的第j列全部元素A(i,:) —A第i行的全部元素A(i:i+m,:) —A矩陣第i~i+m行的全部元素A(:,k:k+m) —A矩陣第k~k+m列的全部元素A(i:i+m,k:k+m) —A矩陣第i~i+m行內,并在第k~k+m列中的所有元素end運算符和中括號方式>>A=randn(3,3) %生成3×3的隨機矩陣>>A(2,:) %A第2行的全部元素>>A(:,3) %A的第3列全部元素>>A(2:3,:) %A的第2~3行的全部元素>>A(:,1:2) %A的第1~2列的全部元素>>A(2:3,1:2) %A的第2~3行內,并在第1~2列中的所有元素>>F=A([1,1,2],:) %通過中括號復制A的第1行2次,第2行1次>>B=eye(3) %生成3×3階單位陣B>>A(:,[13])=B(:,2:3) %將A的第1、3行用B的第2行到第3行取代
矩陣的拆分和提取(2)空矩陣定義[]為空矩陣。給變量A賦空矩陣的語句為A=[]。注意,A=[]與clearA不同,clear是將A從工作空間中刪除,而空矩陣則存在于工作空間中,只是維數為0。可以利用空矩陣刪除矩陣的元素。
>>A=[417;256;389] >>A(2,:)=[] %刪除A的第二行
矩陣的提取diag()是抽取矩陣主對角線元素tril()是抽取矩陣的主下三角元素triu()是抽取矩陣主上三角元素
>>A=[123;456;789] >>diag(A) %抽取矩陣A的主對角線元素
>>tril(A) %抽取矩陣A的主下三角元素
>>triu(A) %抽取矩陣A的主上三角元素
矩陣的擴展子矩陣擴展在MATLAB中可以通過把矩陣B的子塊賦值為A來擴展矩陣A,假設A為m×n維矩陣,一般的命令格式為:B(r1:r2,c1:c2)=A,且需注意維數一致,即r2-r1+1=m且c2-c1+1=n。對于B中原先并不存在的元素,MATLAB將自動補0 >>A=[135;246] >>B(2:3,2:4)=A %將A矩陣擴充,使得A成為B的一個子塊矩陣連接設A為m×n1維矩陣、B是m×n2維矩陣,注意其行數相同,則我們將矩陣A、B按行連接成m×(n1+n2)維的矩陣C,可以寫成C=[A,B]設A為m1×n維矩陣、B為m2×n維矩陣,注意其列數相同,則我們將矩陣A、B縱向連接成(m1+m2)×n維的矩陣C,可以寫成C=[A;B] >>A=[132;432];B=[17;56]; >>C=[A,B] %橫向連接
>>A=[35;21];B=[74;36;91]; >>C=[A;B] %縱向連接
矩陣的變維矩陣的變維reshape命令可以實現矩陣的變維,該命令將矩陣已有元素按照用戶指定的方式生成新的矩陣,例如B=reshape(A,m,n)命令將生成矩陣B,B為m×n維矩陣,且B的元素按列從A中抽取,如果A的元素少于m×n,則MATLAB返回錯誤信息另一種變維的方式是首先定義矩陣的結構,然后將已有的元素填充的新定義的矩陣中去,這里元素的填充方式仍然是按列的方式
>>A=1:6 %生成1×6維的行向量
>>B=reshape(A,2,3) %將行向量的元素值重構為維矩陣
>>C=zeros(3,2);C(:)=B(:) %將2×3維矩陣重構為3×2維矩陣矩陣的變向矩陣的轉置轉置運算符是單撇號(’),矩陣A的轉置在MATLAB中用A’來表示,如果A是復數矩陣,則A’為A的共軛轉置矩陣,而非共軛轉置矩陣可用A.’來求得
>>A=[12;34] >>A'; %實矩陣的轉置
>>B=[1+i2;1i] >>B' %復矩陣的共軛轉置
>>B.‘ %復矩陣的非共軛轉置矩陣的旋轉rot90(A,k)將矩陣A旋轉90o的k倍,當k為1時可省略fliplr(A) 對矩陣實施左右翻轉flipud(A)矩陣A實施上下翻轉的函數
>>rot90(A); %將矩陣A旋轉90o >>fliplr(A); %將矩陣A左右翻轉
>>flipud(A); %將矩陣A上下翻轉MATLAB的矩陣運算矩陣的代數運算(1)基本運算矩陣加減矩陣加減即將A和B矩陣的對應元素相加減。若參與運算的兩矩陣之一為標量,則將標量與矩陣的所有元素分別進行加減操作。注意維數匹配。矩陣乘法設有矩陣A和B,若A為m×n維矩陣,B為n×p維矩陣,注意矩陣A的列數等于矩陣B的行數,則可以由C=A*B實現矩陣的乘法,結果為m×p維矩陣。矩陣除法左除\:A\B等價于inv(A)*B,亦即方程A*x=B的解右除/:B/A等價于B*inv(A),亦即方程x*A=B的解
>>A=[12;34]; >>B=[10;01]; >>A+2 %[34;56]矩陣與標量相加,將標量與矩陣的所有元素相加
>>A+B %[22;35]對應元素相加
>>A-B %[02;33]對應元素相減
>>A*B %B是單位陣,故結果為[12;34] >>A/B %方程x*B=A的解AB-1:[12;34] >>A\B %方程A*x=B的解A-1B:[-21;1.5-0.5]矩陣的代數運算(2)點運算(維數不變,對應元素做相應運算)在MATLAB中,有一種特殊的點運算。點運算符有.*(點乘)、./(點右除)、.\(點左除)和.^(點乘方)。兩個矩陣進行點運算是指它們的對應元素進行相關運算,要求兩矩陣的維參數相同。 >>A=[12;34],B=[56;78]; >>A.*B %.*:A和B對應元素相乘,注意和A*B的區別 >>A./B %./:A和B對應元素相除,注意和A/B的區別 >>A.^3 %.^:對應元素和標量的乘方 >>A.^A %.^:對應矩陣元素之間的乘方 >>A.‘ %.’:非共軛轉置,注意.‘與’,‘為共軛轉置矩陣的維數
>>[m,n]=size(A) %返回矩陣的行數m和列數n >>M=size(A) %在矩陣M中返回矩陣的行數、列數
>>len=length(A) %返回矩陣A行數和列數中的最大值矩陣的關系與邏輯運算關系運算符和邏輯運算符矩陣的關系運算符和邏輯運算符有:<、<=、>、>=、==、~=、&、|、~。在關系與邏輯運算中,“真”用1表示,“假”用0表示,在邏輯運算中,所有的非零元素均按照1來處理,這和一般的關系與邏輯運算是相同的。運算規則若參與關系與邏輯運算的是兩個同維矩陣,那么運算將對矩陣相同位置上的元素按標量規則逐個進行比較或運算。最終運算結果是一個與原矩陣同維的矩陣,其元素由1或0組成。若參與關系與邏輯運算的一個是標量,一個是矩陣,那么運算將在標量與矩陣中的每個元素之間按標量規則逐個進行比較或運算。最終運算結果是一個與矩陣同維的矩陣,其元素由1或0組成。
>>A=[13;69];B=[42;07];A>=B; %同維矩陣的關系運算
>>a=5;A=[25;61];a==A; %標量與矩陣的關系運算
>>A=[43;01];B=[10;23];A|B; %同維矩陣的或運算
>>a=2;A=[01;32];a&A; %標量與矩陣的與運算矩陣分析(1)矩陣的行列式運算對一個方陣可以通過det命令求矩陣的行列式,如果參數矩陣為非方陣則會返回維數不匹配的錯誤信息。若A為數值矩陣,則得出數值計算結果,若A為符號矩陣,則得出解析解。 >>A=magic(3); %[816;357;492] >>det(A) %-360 ans= -360 >>symsabcd; >>A=[ab;cd]; >>det(A) ans= a*d-b*c矩陣分析(2)矩陣的秩運算矩陣的行向量(或者列向量)中的最大線性無關組的個數稱為矩陣的秩。在MATLAB中,求矩陣秩的函數是rank(A) >>A=rand(3); >>rank(A) ans= 3 >>B=[123;456];B(3,:)=2*B(1,:)+3*B(2,:); >>rank(B) ans=
2 >>C=ones(3); >>rank(C) ans= 1矩陣分析(3)矩陣的求逆運算若矩陣A為方陣且滿秩,且存在一個與其同階的方陣B,使得:AB=BA=I(I為單位矩陣)則稱A為B互為逆矩陣。求方陣A的逆矩陣可調用函數inv(A)若矩陣A不是方陣,或者A是一個非滿秩的方陣時,矩陣A沒有逆矩陣,但可以找到一個與A的轉置矩陣A’同型的矩陣B,使得:ABA=A,BAB=B
此時稱矩陣B為矩陣A的偽逆,也稱為廣義逆矩陣。在MATLAB中,求一個矩陣偽逆的函數是pinv(A)
>>A=magic(4);inv(A);A^(-1) %滿秩方陣的逆
>>A=[123;456];pinv(A); %非方陣的廣義逆
>>B=[123;456;579];pinv(B); %非滿秩矩陣的廣義逆矩陣分析(4)矩陣的特征值和特征向量運算對矩陣A而言,滿足PA(λ)=det(λI-A)=0的根λ為矩陣A的特征值。滿足λiv=Av的向量v為矩陣A關于特征值λi的特征向量,PA(λ)稱為矩陣A的特征多項式。在MATLAB中,矩陣的特征值和特征向量可以調用函數eig()求得。調用格式如下E=eig(A):求矩陣A的全部特征值,構成向量E[V,D]=eig(A):D為對角陣,其對角線上的元素為矩陣A的特征值,每個特征值對應的特征向量即為矩陣V的對應列,且特征向量均進行模方歸一化處理[V,D]=eig(A,‘nobalance’):與第2種格式類似,但第2種格式中先對A作相似變換后求矩陣A的特征值和特征向量,其每個特征向量各元素的平方和均為1,而格式3直接求矩陣A的特征值和特征向量,并不進行歸一化處理>>A=magic(3);>>E=eig(A);>>[V,D]=eig(A);>>[V,D]=eig(A,‘nobalance’)矩陣分析(5)矩陣的跡運算若矩陣A為方陣,則矩陣A的跡即為該矩陣對角線上各元素的和。矩陣的跡和該矩陣的特征值之和是相同的。在MATLAB中求矩陣A的跡的函數為trace(A) >>A=magic(3) %生成三階幻方矩陣A >>trace(A) %求A的跡
ans= 15 >>v=eig(A) %驗證矩陣A的跡與其特征值的和相等
v= 15.0000 4.8990 -4.8990 >>sum_of_eig_A=v(1)+v(2)+v(3)
sum_of_eig_A= 15.0000矩陣的超越函數超越函數MATLAB語言中的exp、sqrt和log等函數命令也可以作用到矩陣上,但這種運算只是定義在矩陣的單個元素上在超越數學函數的后面加上字母m從而構成矩陣的超越函數,expm、sqrtm和logm分別為矩陣指數、矩陣開方和矩陣對數。矩陣的超越函數要求運算的矩陣必須為方陣。矩陣的超越函數也可以用一般的形式表示,如矩陣指數用funm(A,'exp')函數命令可以實現,但它們所采用的算法不同,其計算結果會有微小的差別
>>A=magic(2) %生成二階魔方矩陣
>>expm(A) %矩陣乘方
>>logm(A) %矩陣對數
>>funm(A,‘log’) %另一種形式的對數調用MATLAB的符號運算符號表達式的化簡假設符號表達式為f,對符號表達式化簡的函數有:simplify(f) 應用函數規則對f進行化簡。simple(f) 調用MATLAB的相關函數對表達式進行綜合化 簡,并顯示化簡過程 >>symsxy; >>f=(x^2+y^2)^2+(x^2-y^2)^2+sin(x)^2+cos(x)^2; >>simplify(f)
ans= 2*x^4+2*y^4+1因式分解符號表達式的因式分解函數為factor(f) >>symsx; >>f=x^3-1; %生成符號表達式f=x3-1 >>f1=factor(f) %對f=x3-1進行因式分解,結果存入f1 f1= (x-1)*(x^2+x+1)符號微積分(1)符號極限在MATLAB中調用limit()函數可以求取符號表達式的極限,設符號表達式為f,調用函數格式如下:limit(f,x,a) 計算f在x→a條件下的極限;limit(f,a) 計算f中由默認自變量趨向于a條件下的極限;limit(f) 計算f在默認自變量趨向于0條件下的極限;limit(f,x,a,‘right’)和limit(f,x,a,‘left’)計算f在x→a條件下的右極限和左極限。 >>symsxa; >>f=(1+a/x)^x; >>r1=limit(sin(x)/x) %求符號表達式1的極限值 r1= 1 >>r2=limit(f,x,inf,'left') %求符號表達式2的極限值 r2=
exp(a)符號微積分(2)符號微分在MATLAB中調用diff()函數可以求取符號表達式的極限,設符號表達式為f,調用函數格式如下:diff(f) 求f對于默認自變量的微分diff(f,x) 求f對于自變量x的微分diff(f,n) 求f對于默認自變量的n次微分>>symsx>>f=exp(x)*sin(x);>>r1=diff(f) %求符號表達式f的一次微分r1=exp(x)*cos(x)+exp(x)*sin(x)>>r2=diff(f,2) %求符號表達式f的二次微分r2=2*exp(x)*cos(x)符號微積分(3)符號積分在MATLAB中調用int()函數可以求取符號表達式的積分,設符號表達式為f,調用函數格式如下:int(f) 求f對于默認自變量的不定積分int(f,x) 求f對于自變量x的不定積分int(f,a,b) 求f對于默認自變量從a到b的定積分>>symsx;>>f1=-2*x/(1+x^2)^2;>>f2=x*log(1+x);>>r1=int(f1) %求符號表達式1的不定積分>>r2=int(f2,0,1) %求符號表達式2的定積分r1=1/(x^2+1)r2=1/4多項式(1)應用背景多項式在工程計算中有著廣泛的應用,在很多情況下,特殊函數都可以用Taylor級數展開成多項式的形式,控制系統的傳遞函數可以用多項式的形式表述多項式的定義直接輸入MATLAB采用行向量表示多項式,將多項式的系數按降冪次序存放在行向量中即可,多項式P(x)=anxn+…+a1x+a0表示為P=[an,an-1,…,a1,a0]命令poly如果A是矩陣,則poly(A)將創建矩陣A的特征多項式;如果A是向量,則poly(A)將創建以A中各元素為根的多項式
>>A=magic(2); %二階魔方矩陣
>>poly(A); %矩陣A的特征多項式
>>symsx;det(x*eye(2)-A); %驗證是否相符
>>A=[123];>>poly(A); %創建以123為根的多項式
>>symsx;>>expand((x-1)*(x-2)*(x-3)); %驗證多項式顯示poly2sym(p,'x')多項式(2)多項式運算多項式加減:+-使用Matlab的運算符+-實現多項式的加減法對于次數相同的多項式,可以直接對其系數向量進行加減運算;如果兩個多項式次數不同,則應該把低次多項式中系數不足的高次項用0補足,然后進行加減運算>>pa=[1-1-26]; %pa=x3-x2-2x+6>>pb=[0123]; %pb=x2+2x+3>>p=pa+pb %多項式相加,向量維數必須相同,低次多項式補零p= %相加以后的結果1009多項式(3)多項式運算多項式相乘:p=conv(p1,p2)p為多項式p1和多項式p2的乘積>>p=[2,-1,0,3];q=[2,1];>>k=conv(p,q); %(2x3-x2+3)(2x+1)k=40-163>>m=conv([11],conv([12],conv([13],[14]))) %(x+1)(x+2)(x+3)(x+4)m=110355024多項式相除:[q,r]=deconv(p1,p2)多項式p1除以多項式p2,商多項式為q,余多項式為r[q,r]=deconv(p1,p2)p1=conv(q,p2)+r>>p1=[123];p2=[12];[q,r]=deconv(p1,p2)q=10r=003多項式(4)多項式運算多項式求導
dp=polyder(p) 多項式p的導數多項式為dp
dp=polyder(p1,p2) 多項式p1和多項式p2乘積的導數多項式為dp
[num,den]=polyder(p1,p2)有理分式(p1/p2)的求導后的有理分式為(num/den)多項式求值代數多項式求值y=polyval(p,x)求多項式p在自變量為x時的值,若x是向量或矩陣,則采用數組運算(點運算)!矩陣多項式求值Y=ployvalm(p,A)按矩陣運算規則求多項式p在自變量為A時的值,當自變量A為矩陣時,多項式中的常數項a0被當作a0*eye(n)處理例如對于多項式p(x)=2x3-x2+3
polyvalm(p,A)=2*A*A*A-A*A+3*eye(size(A))
polyval(p,A)=2*A.*A.*A-A.*A+3*ones(size(A))多項式(5)多項式運算多項式求根:r=roots(p) r為多項式p的根組成的列向量>>p=[132];roots(p)ans=-2-1部分分式分解:[r,p,k]=residue(num,den)有理分式(num/den)部分分式分解后,r為留數,p為極點,k為直項>>num=[1
11
39
52
26];den=[1
10
35
50
24]; %無重極點>>[r,p,k]=residue(num,den);>>num=[0
1
4
6];den=[1
3
3
1]; %有重極點>>[r,p,k]=residue(num,den)多項式擬合:p=polyfit(x,y,n) 由給定數據x和y擬合出n階多項式p,用來逼近y=f(x)曲線使用非線性擬合工具箱cftoolMATLAB編程基礎引言在前面的內容中,我們掌握了MATLAB的基礎知識,學會了如何在MATLAB的命令窗口進行科學計算操作,例如矩陣計算、符號計算等,這些語句按照用戶輸入的固定順序一個接一個的執行,它首先讀取輸入,然后運算得到所需結果,打印出結果,這和編程中的順序結構編程類似,在之前的例子中,我們不能重復運算程序的某些部分,也不能根據輸入的值,有選擇地執行程序的某些部分。在下面的內容中,我們將視野擴大至順序結構以外的流程控制結構,向讀者介紹MATLAB編程方法,循序漸進,首先講解MATLAB編程中的幾種流程控制結構,而后介紹MATLAB中的腳本文件和M函數文件的編寫,最后針對已經編好的程序介紹如何調試程序。MATLAB中的控制結構循環結構for循環while循環選擇結構if結構switch結構try/catch結構其他流程控制語句break語句continue語句for循環循環終止條件for循環的循環終止條件通常是對循環次數的判斷,達到預先設定好的循環次數則循環結束,所以for循環的次數是確定的語法 forindex=expression
loopbody end
其中,index是循環變量,expression是循環控制表達式,在for和end之前的執行語句為循環體(loopbody)執行順序變量index讀取表達式expression,其在一般情況下是一個向量,用冒號表達式表示為start:increment:end,若采用默認的步長1,則表示為start:end;在這種情況下,循環變量index每次從向量expression中讀取一個元素,然后程序執行循環體(loopbody),直至向量expression中所有元素讀取完畢,故一般而言,向量expression中有多少元素,循環體就執行多少次for循環利用for循環求6! >>N=6;S=1; >>fori=N:-1:1 S=S*i; end >>S S= 720求解級數求和問題 >>S=0; >>fori=1:100000 S=S+1/2^i+1/3^i; endfor循環for循環可以嵌套使用,請用這種方法打印九九乘法表>>fori=1:9forj=1:ifprintf('%d*%d=%d',i,j,i*j);endfprintf('\n');end1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=256*1=66*2=126*3=186*4=246*5=306*6=367*1=77*2=147*3=217*4=287*5=357*6=427*7=498*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=649*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81while循環循環終止條件對循環條件表達式的判斷,只要循環條件表達式為真,則循環體就重復執行,直到循環條件表達式為假。所以while循環的次數不確定語法 whilecondition
loopbody end如果condition的值非零(true),程序將執行循環體(loopbody),然后返回到while語句執行,直到condition的值變為零(false),這個重復過程結束。當程序執行到while語句且condition的值為0之后,程序將會執行end后面的第一個語句。while循環求Fibonacci數列的小于100的前n項 >>f(1)=1;f(2)=1; %Fibonacci數列的前兩項 >>i=2; %項數標志 >>flag=0; %循環終止判斷標志變量 >>while(flag<100) %終止條件是循環終止判斷標志變量小于100 i=i+1;
f(i)=f(i-1)+f(i-2); %Fibonacci數列項的求取方法 flag=f(i)+f(i-1); %循環終止判斷變量,已求數列的最后兩項和 end
求出滿足的最小m值 >>s=0;m=0 >>while(s<=10000) m=m+1; s=s+m; end [s,m]
ans= 10011 141if結構if-end結構
ifcondition statements end其中當條件表達式condition的值為真(非0)時執行語句段statements
if-else-end結構 ifcondition statements_1 else statements_2 end其中當條件表達式condition的值非0時執行語句段statements_1,否則執行語句段statements_2if結構if-elseif-…-else-end結構 ifcondition_1 statements_1
elseifcondition_2 %這里可以有多個elseif statements_2 else statements_3 end在這種結構控制下,當運行到程序的某一條條件表達式為真(非0)時,則執行與之相關的語句段,而后系統不再檢查其他的條件表達式,系統將跳過if結構中的其他語句。具體執行順序為:如果條件表達式condition_1的值非0,那么程序將會執行語句段statements_1,然后跳轉到end后面的第一個可執行語句繼續執行。否則,程序將會檢測條件表達式condition_2的值,如果condition_2的值非0,那么程序將會執行語句段statements_2,然后跳轉到end后面的第一個可執行語句繼續執行。如果所有的控制表達式均為0,那么程序將會執行與else相關的語句段statements_3
switch結構語法 switch(switch_expr) casecase_expr_1, statements_1 casecase_expr_2, statements_2 … otherwise,
statements_other end在這個控制結構中,主要是通過對switch_expr的值與下面表達式的值是否匹配來決定程序的轉向的。如果switch_expr的值與case_expr_1相符,那么第一個語句段statements_1將會被執行,然后程序將會跳轉到switch結構結束語句end后的第一個語句。如果switch_expr的值與case_expr_2相符,那么第二個語句段將會被執行,然后程序將會跳到switch結構結束語句end后的第一個語句。在這個結構中,otherwise語句段是可選的。如果它存在的話,當switch_expr的值與其他所有的選項都不相符時,語句段statements_other將會被執行。如果它不存在,且witch_expr的值與所有的選項都不相符時,結構中的任何一個語句段都不會被執行。switch結構注意如果switch_expr有很多值可以導致相同代碼的執行,那么這些值可以括在同一括號內,如果這個switch表達式和括號中任何一個值相匹配,那么這個語句段將會被執行。
switch(switch_expr) case{case_expr_1,case_expr_2,case_expr_3}, statements otherwise,
statements_other endswitch結構 day=input('請輸入英文日期如:Sunday\n','s');switchday case{'Sunday','sunday'}
disp('星期日');
case{'Monday','monday'}
disp('星期一');
case{'Tuesday','tuesday'}
disp('星期二');
case{'Wednesday','wednesday'}
disp('星期三');
case{'Thursday','thursday'}
disp('星期四');
case{'Friday','friday'}
disp('星期五');
case{'Saturday','saturday'}
disp('星期六');
otherwise
disp('Error');
end其他流程控制語句break語句和continue語句break語句和continue語句用于循環中的流程控制。一般可以和if語句配合使用。break語句用于終止循環的執行,當在循環體內執行到該語句時,程序將跳出循環,繼續執行循環語句的下一語句。continue語句控制跳過循環體中的某些語句。當在循環體內執行到該語句時,程序將跳過循環體中所有剩下的語句,繼續下一次循環。如果break或continue語句出現在循環嵌套的內部,那么break語句和continue語句將會在包含它的最內部的循環起作用。求[200,500]之間第一個能被53整除的整數 >>fori=200:500 ifrem(i,53)~=0 continue end break end >>i i=
212
其他流程控制語句return語句當用戶需要在文件中進行終止操作時,可以使用return命令,執行return命令后,進程將返回調用函數或者鍵盤。運用return命令可以提前結束程序的運行。return和break的區別在于return一般用于函數或者文件的結束,而break用于循環的終止。文件的編寫與調試為什么?當我們遇到綜合性問題時,命令窗口將不再適合,而需要用到程序編輯與調試的環境,在MATLAB中我們稱之為M文件編輯器。利用它我們可以實現對MATLAB命令行語句段的批處理,或者對M文件進行保存和調用,使得MATLAB的功能得到了極大的擴展,適用于較大規模程序的編制,并以此解決更為復雜的工程問題如何?MATLAB下提供了兩種源程序文件格式,其中一種是普通的ASCII碼構成的文件,在這樣的文件中包含了一族由MATLAB語言所支持的語句,它類似于DOS下的批處理文件,這種文件稱為M-腳本文件;而MATLAB程序設計的主流方法是M-函數文件在實際編程中,推薦使用M-函數文件格式編程M文件M文件MATLAB程序,大致分為兩類:M腳本文件
(M-Script)和M函數文件(M-function),它們均是普通的ASCII碼構成的文件,后綴均為.m。M文件名的命名規則,文件名必須以字母開頭,而后可以是英文、數字和下劃線的組合,文件名首字符不能是數字或下劃線,M文件名中不能含有空格;同時,M文件名文件名不能與Matlab的內部函數名相同,因而我們建議對M文件的命名盡量不要是簡單的英文單詞,簡單的單詞命名容易與MATLAB內部函數同名,還有一點需要注意,雖然MATLAB對M文件名是大小寫敏感的,但Windows的文件名是不區分大小寫的,為了文件的保存方便,實現不同平臺之間的通用性,,建議M文件名盡量只使用小寫。M文件編輯器功能編寫用戶的M文件打開和修改M文件,觀察變量值、調試程序等啟動M文件編輯器在命令窗口輸入edit命令可進入M文件編輯器,此時MATLAB將建立一個空文件,如果需要查看、編輯或者修改已經存在的M文件,例如文件名為test.m,則用戶只需在命令窗口輸入edittest或者edittest.m;或者在Windows文件夾中雙擊該文件單擊工具欄上的M-file按鈕,此時MATLAB將建立一個空文件;通過File|New菜單可以選擇建立不同類型的M-file,包括空M文件、函數M文件和類M文件,當選擇建立函數M文件或者類M文件時,MATLAB會自動給出相應文件類型的模版。注意每次修改程序之后都要存盤M腳本文件適用范圍M腳本文件適用于用戶所需要立即得到結果的小規模運算使用方法M腳本文件中存儲的是可用于自動重復執行的一組MATLAB命令和函數組合。M腳本文件等價于從命令窗口中順序輸入文件里的命令,程序只要依次將命令編輯在命令文件中,再保存成為擴展名為.m的M腳本文件即可。M腳本文件的執行方式第一種方式是在M文件編輯器的工具欄中點擊Run按鈕,第二種方式類似批處理文件,只需要在MATLAB命令窗口的命令行提示符>>之后鍵入M腳本文件的文件名即可,這樣MATLAB將自動執行該M腳本文件中的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公室裝修合同終止協議書
- 臨床護士長月工作計劃
- 化妝品倉儲租賃協議
- 2024深圳市沙井職業高級中學工作人員招聘考試及答案
- 2024漯河市第二中等專業學校工作人員招聘考試及答案
- 成都餐飲商鋪租賃合同
- 2024河南省信陽航空服務學校工作人員招聘考試及答案
- 腦梗死護理查房醫學
- 家族企業股份轉讓合同協議
- 供應鏈合作協議合同
- 人民幣教具正反面完美打印版
- PPT模板:綠色迷彩八一建軍節熱血鑄軍魂部隊風采課件
- 歸檔病歷交接登記表
- 管理案例分析綜合練習及答案
- 水利定額人工費調整文件
- 麥肯錫——大數據:創新、競爭和生產力的下一個前沿
- 人教版小學語文二年級《雷雨》PPT課件
- 現澆箱梁盤扣式現澆支架施工方案(通過專家論證)
- 《監督法》講座稿
- 熱質交換課第05講(習題課1)
- 2020最新世界各國安規插頭尺寸標準版
評論
0/150
提交評論