第一篇:matlab中s函數編寫心得(轉)
matlab中s函數編寫心得(轉)
Part I:
所謂s函數是system Function的簡稱, 用它來寫自己的simulink模塊.s函數可以用matlab、C、C++、Fortran、Ada等語言來寫,這兒我只介紹怎樣用matlab語言來寫吧(主要是它比較簡單)< xmlnamespace prefix =“o” ns =“urn:schemas-microsoft-com:office:office” />
先講講為什么要用s函數,我覺得用s函數可以利用matlab的豐富資源,而不僅僅局限于simulink提供的模塊,而用c或c++等語言寫的s函數還可以實現對硬件端口的操作,還可以操作windows API
等
先介紹一下simulink的仿真過程(以便理解s函數),simulink的仿真有兩個階段: 一個為初始化,這個階段主要是設置一些參數,像系統的輸入輸出個數、狀態初值、采樣時間等;第二個階段就是運行階段,這個階段里要進行計算輸出、更新離散狀態、計算連續狀態等等,這個階段需要反復運行,直至結束.在matlab的workspace里輸入edit sfuntmpl(這是matlab自己提供的s函數模板),我們看它來具體分析s函數的結構.1.函數的函數頭
函數的第一行:function [sys,x0,str,ts]=sfuntmpl(t,x,u,flag), 先
講輸入與輸出變量的含義:
t是采樣時間, x是狀態變量, u是輸入(是做成simulink模塊的輸入), flag是仿真過程中的狀態標志(以它來判斷當前是初始化還是運行等)sys輸出根據flag的不同而不同(下面將結合flag來講sys的含義), x0是狀態變量的初始值, str是保留參數(mathworks公司還沒想好該怎么用它, 一般在初始化中將它置空就可以了, str=[]), ts是一個1×2的向量, ts(1)是采樣周期, ts(2)是偏移量
2.函數分析
下面結合sfuntmpl.m中的代碼來講具體的結構:
switch flag, %判斷flag,看當前處于哪個狀態
case 0,[sys,x0,str,ts]=mdlInitializeSizes;
// 解釋說明
flag=0表示當前處于初始化狀態,此時調用函數mdlInitializeSizes進行初始化,此函數在該文件的第149行定義.其中的參數sys是一個結構體,它用來設置模塊的一些參數,各個參數詳
細說明如下
size = simsizes;%用于設置模塊參數的結構體用simsizes來生
成
sizes.NumContStates = 0;%模塊連續狀態變量的個數 sizes.NumDiscStates = 0;%模塊離散狀態變量的個數
sizes.NumOutputs = 0;%模塊輸出變量的個數
sizes.NumInputs = 0;%模塊輸入變量的個數
sizes.DirFeedthrough = 1;%模塊是否存在直接貫通 sizes.NumSampleTimes = 1;%模塊的采樣時間個數, 至少
是一個
sys = simsizes(sizes);%設置完后賦給sys輸出
舉個例子,考慮如下模型: dx/dt=fc(t,x,u)也可以用連續狀態方程描述:dx/dt=A*x+B*u
x(k+1)=fd(t,x,u)也可以用離散狀態方程描述:
x(k+1)=H*x(k)+G*u(k)
y=fo(t,x,u)也可以用輸出狀態方程描述:y=C*x+D*u 設上述模型連續狀態變量、離散狀態變量、輸入變量、輸出變量均為1個,我們就只需改上面那一段代碼為(一般連續狀態與離散狀態不會一
塊用, 我這兒是為了方便說明): sizes.NumContStates=1;sizes.NumDiscStates=1;sizes.NumOutputs=1;sizes.NumInputs=1;
其他的可以不變, 繼續在mdlInitializeSizes函數中往下看:
x0 = [];%狀態變量設置為空,表示沒有狀態變量,以我們上面的假設,可改為x0=[0,0](離散和連續的狀態變量我們都設它初值為0)
str = [];%保留參數, 置[]就可以了, 沒什么用
ts = [0 0];%采樣周期設為0表示是連續系統, 如果是離散系統在下面的mdlGetTimeOfNextVarHit函數中具體介紹
case 1,sys=mdlDerivatives(t,x,u);
// flag=1表示此時要計算連續狀態的微分, 即上面提到的dx/dt=fc(t,x,u)中的dx/dt, 找到193行的函數mdlDerivatives, 如果設置連續狀態變量個數為0, 此處只需sys=[]就可以了, 按我們上述討論的那個模型, 此處改成 sys=fc(t,x(1),u)或sys=A*x(1)+B*u, 我們這兒x(1)是連續狀態變量, 而x(2)是離散的, 這兒只用到連續的, 此時的輸出sys就是微分
case 2,sys=mdlUpdate(t,x,u);
// flag=2表示此時要計算下一個離散狀態, 即上面提到的x(k+1)=fd(t,x,u), 找到mdlUpdate函數, 它這兒sys=[]表示沒有離散狀態, 我們這兒可以改成sys=fd(t,x(2),u)或sys=H*x(2)+G*u;%sys即為x(k+1)
case 3,sys=mdlOutputs(t,x,u);
// flag=3表示此時要計算輸出, 即y=fo(t,x,u), 找到218行的mdlOutputs函數.如果sys=[]表示沒有輸出, 我們改成sys=fo(t,x,u)或sys=C*x+D*u %sys此時為輸出y
case 4,sys=mdlGetTimeOfNextVarHit(t,x,u);
// flag=4表示此時要計算下一次采樣的時間, 只在離散采樣系統中有用(即上文的mdlInitializeSizes中提到的ts設置ts(1)不為0), 連續系統中只需在mdlGetTimeOfNextVarHit函數中寫上sys=[].這個函數主要用于變步長的設置, 具體實現大家可以用edit vsfunc看
vsfunc.m這個例子
case 9,sys=mdlTerminate(t,x,u);
//
flag=9表示此時系統要結束,一般來說寫上在mdlTerminate函數中寫上sys=[]就可, 如果你在結束時還要設置什么,就在此函數中寫完
了.Part II
此外, s函數還可以帶用戶參數, 下面給個例子, 它和simulink下的gain
模塊功能一樣
function [sys,x0,str,ts] = sfungain(t,x,u,flag,gain)
switch flag, case 0, sizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs = 1;sizes.NumInputs = 1;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0=[];str=[];ts=[0,0];case 3, sys=gain*u;case {1,2,4,9},sys = [];end
做好了s函數后, simulink--> user-defined function下拖一個S-Function到你的模型, 就可以用了.在simulink--> user-defined function還有個s-Function Builder, 他可以生成用c語言寫的s函數.或者在matlab的workspace下打sfundemos, 可
以看到很多演示s函數的程序
Part III
SIMULINK s-function的設計
Simulink為用戶提供了許多內置的基本庫模塊, 通過這些模塊進行連接而構成系統的模型.對于那些經常使用的模塊進行組合并封裝可以構建出重復使用的新模塊, 但它依然是基于Simulink原來提供的內置模塊.而Simulink s-function是一種強大的對模塊庫進行擴展的新工具.(一)s-function的概念
s-function是一個動態系統的計算機語言描述, 在MATLAB里, 用戶可以選擇用m文件編寫, 也可以用c或mex文件編寫, 在這里只給大家介紹如何用m文件編寫s-function.S-function提供了擴展Simulink模塊庫的有力工具, 它采用一種特定的調用語法, 使函數和Simulink解法器進行交互.S-function最廣泛的用途是定制用戶自己的Simulink模塊.它的形式十分通用, 能夠支持連續系統、離散系統和混合系統.(二)建立m文件s-function
1.使用模板文件:sfuntmp1.m, 其格式為[sys,x0]=function(t,x,u,flag).該該模板文件位于MATLAB根目錄下toolbox/simulink/blocks目錄下
模板文件里s-function的結構十分簡單, 它只為不同的flag的值指定要相應調用的m文件子函數.比如當flag=3時, 即模塊處于計算輸出這個仿真階段時, 相應調用的子函數為sys=mdloutputs(t,x,u).模板文件使用switch語句來完成這種指定, 當然這種結構并不唯一, 用戶也可以使用if語句來完成同樣的功能.而且在實際運用時, 可以根據實際需要來去掉某些值, 因為并不是每個模塊都需要經過所有的子
函數調用.模板文件只是Simulink為方便用戶而提供的一種參考格式, 并不是編寫s-function的語法要求, 用戶完全可以改變子函數的名稱, 或者直接把代碼寫在主函數里, 但使用模板文件的好處是, 比較方便, 而且條
理清晰.使用模板編寫s-function, 用戶只需把s-函數名換成期望的函數名稱, 如果需要額外的輸入參量, 還需在輸入參數列表的后面增加這些參數, 因為前面的4個參數是simulink調用s-function時自動傳入的.對于輸出參數, 最好不做修改.接下去的工作就是根據所編s-function要完成的任務, 用相應的代碼去替代模板里各個子函數的代碼即可.Simulink在每個仿真階段都會對s-function進行調用.在調用時, Simulink會根據所處的仿真階段為flag傳入不同的值, 而且還會為sys這個返回參數指定不同的角色.也就是說盡管是相同的sys變量, 但在不同的仿真階段其意義卻不相同, 這種變化由simulink自動完成.m文件s-function可用的子函數說明如下:
mdlInitializeSizes(flag=0)--定義s-function模塊的基本特性, 包括采樣時間、連續或者離散狀態的初始條件和sizes數組
mdlDerivatives(flag=1)--計算連續狀態變量的微分方程
mdlUpdate(flag=2)--更新離散狀態、采樣時間和主時間步的要
求
mdlOutputs(flag=3)--計算s-function的輸出
mdlGetTimeOfNextVarHit(flag=4)--計算下一個采樣點的絕對時間, 這個方法僅僅是在用戶在mdlInitializeSizes 里說明了一個
可變的離散采樣時間
概括說來, 建立s-function可以分成兩個分離的任務: 第一, 初始化模塊特性包括輸入輸出信號的寬度, 離散連續狀態的初始條件和采樣時間.第二, 將算法放到合適的s-function子函數中去。
2.定義s-function的初始信息
為了讓Simulink識別出一個m文件是s-function, 用戶必須在s-函數里提供有關s-函數的說明信息, 包括采樣時間、連續或者離散狀態個數等初始條件.這一部分主要是在mdlInitializeSizes子函數里
完成.Sizes數組是s-function函數信息的載體, 它內部的字段意義為:
NumContStates(sys(1)):連續狀態的個數(狀態向量連續部
分的寬度)
NumDiscStates(sys(2)):離散狀態的個數(狀態向量離散部
分的寬度)
NumOutputs(sys(3)): 輸出變量的個數(輸出向量的寬度)
NumInputs(sys(4)):輸入變量的個數(輸入向量的寬度)
DirFeedthrough(sys(5)):有不連續根的數量
NumSampleTimes(sys(6)):采樣時間的個數,有無代數循環
標志
如果字段代表的向量寬度為動態可變, 則可以將它們賦值為-1.注意DirFeedthrough是一個布爾變量, 它的取值只有0和1兩種, 0表示沒有直接饋入, 此時用戶在編寫mdlOutputs子函數時就要確保子函數的代碼里不出現輸入變量u;1表示有直接饋入.NumSampleTimes表示采樣時間的個數, 也就是ts變量的行數, 與
用戶對ts的定義有關.需要指出的是, 由于s-function會忽略端口, 所以當有多個輸入變量或多個輸出變量時, 必須用mux模塊或demux模塊將多個單一輸入合成一個復合輸入向量或將一個復合輸出向量分解為多個單一輸出.3.輸入和輸出參量說明
S-function默認的4個輸入參數為t、x、u和flag, 它們的次序不
能變動, 代表的意義分別為:
t--代表當前的仿真時間, 這個輸入參數通常用于決定下一個采樣時刻, 或者在多采樣速率系統中, 用來區分不同的采樣時刻點, 并
據此進行不同的處理
x--表示狀態向量, 這個參數是必須的, 甚至在系統中不存在狀態時也是如此.它具有很靈活的運用
u--表示輸入向量
flag--是一個控制在每一個仿真階段調用哪一個子函數的參數,由Simulink在調用時自動取值.S-function默認的4個返回參數為sys、x0、它們的次序不能變動,代表的意義分別為:
sys--是一個通用的返回參數, 它所返回值的意義取決于flag的值
x0--是初始的狀態值(沒有狀態時是一個空矩陣[]), 這個返回參數只在flag值為0時才有效, 其他時候都會被忽略.假設, 有一系統如下:
dx1=x2
dx2=9.81*sin(x(1))-2*x(2)+u
求出系統在單位階躍輸入下的x1的狀態變化曲線, 假設x1,x2初值為
0, 則:
function [sys,x0]=dong(t,x,u,flag)
if flag==0
sys=[2;0;2;1;0;0];
x0=[0;0];
elseif flag==1
sys=[x(2);9.81*sin(x(1))-2*x(2)+u];
elseif flag==3
sys=[x(1);x(2)];
else
sys=[];
end
第二篇:matlab中的set函數總結
matlab中的set函數總結
1ATLAB給每種對象的每一個屬性規定了一個名字,稱為屬性名,而屬性名的取值成為屬性值。例如,LineSyle是曲線對象的一個屬性名,它的值決定著線型,取值可以是'-'、''、'-'、'--'或'none'。
2屬性的操作
se函數的調用格式為:
se(句柄,屬性名1,屬性值1,屬性名2,屬性值2,?)例子: ler x=00212;y1=bessel(1,x);y2=bessel(2,x);y3=bessel(3,x);=lo(x,y1,x,y2,x,y3);se(,{'LineWid'},{2;5;8})%se(,{'LineWid'},{2})==se(,'LineWid',2),將所有線寬設置為2 se(,{'Color'},{'r';'g';'b'},{'LineSyle'},{'--';'';'-'})%設置顏色和線寬 xis([012-051])%設置坐標軸圍 gridon X=0112;Y=-050251;se(g,'xik',X,'yik',Y)%設置網格的顯示格式,g獲取當前igure的句柄 se(xlbel('Time'),'FonSize',12,'Color','r')y=ylbel('Amliude');se(y,'FonSize',12,'Color','g')legend(,'Firs','Seond','Tird')%添加圖例 ile('BesselFunions')%添加標題
[y,ix]=min(y1);%找到y1的最小值以及改值的下標,賦給y和ix ex(x(ix),y,'Firsinrigrro','HorizonlAlignmen','rig')%插入本 具體可改哪些屬性值見貼 blogedninomx543218124essgesx-------------------------這兩天在看句柄式圖形方面的東西,以下是我在看書過程中整理的學習筆記,比較詳細的介紹了句柄以及與其密切相關的各種圖形對象和它們的屬性。希望能對初學lb界面設計的朋友們有所幫助。
GU學習筆記: 句柄式圖形常用函數:
(1)ge()返回句柄值所指定的圖形對象的所有屬性名稱與相對應的屬性值(2)=ge()返回由句柄值所指定的圖形對象的屬性結構數組,并且該數組的字段名稱就是該對象的屬性名稱。
(3)=ge(0,'ory')返回所有能由用戶設置的屬性的默認定義值。
(4)=ge(0,'ForybjeTyeProeryNme1','ForybjeTyeProeryNme2',)返回指定對象類型指定的屬性值,輸入參數ForybjeTyeProeryNme為一個關鍵詞,由字符Fory與圖形對象類型(如Figure)還有屬性名稱(如Color)組成。
=ge(0,'oryFigureColor')返回Figure對象的Color屬性值。
(5)=ge(,'DeulbjeTyeProeryNme1','DeulbjeTyeProeryNme1',)返回句柄值為的對象指定屬性的默認值。如“DeulFigureColor”。
(6)=ge(,'deul')列出對象的所有屬性的默認屬性值
(7)=se()返回句柄值所指定的圖形對象的所有屬性名稱對應的可設置屬性值,為結構數組,存儲對象的屬性名稱,其字段值為相對應的屬性值。屬性值中用{}括起來的表示默認值。
(8)se(,)使用指定的屬性值來設置由句柄值所指定的對象屬性,為結構數組,其字段名稱為對象的屬性名稱,字段值為相對應的屬性值。
(9)=se(0,'ory')返回那些用戶可以設置默認值的所有對象的屬性,同時顯示可設置的屬性值。
(10)=se(0,'ForybjeTyeProeryNme')返回所有對象中指定的屬性名稱ForybjeTyeProeryNme的所有可能的屬性值。
(11)=se(,'屬性名','屬性值')設置句柄值為的對象的與屬性名對應的屬性值。(12)se(,'DeulbjeTyeProeryNme1','DeulbjeTyeProeryNme2',)對句柄值為的對象設置特定屬性名稱的屬性默認值。
(13)H=indobj;返回Roo對象與其所有子對象的句柄值(14)H=indobj();返回變量的句柄值
(15)H=indobj(’屬性名稱‘,’屬性值‘);依據對象的屬性名稱和屬性值找出匹配的對象句柄值。
(16)H=indobj(bjeHndles,’屬性名稱‘,’屬性值‘);根據限定的對象列表找出與對象的屬性名稱和屬性值匹配的對象句柄值
(17)g返回當前Figure對象的句柄值 g返回當前xes對象的句柄值
go返回當前鼠標單擊的句柄值,該對象可以是除roo對象外的任意圖形對象,并且lb會把當前圖形對象的句柄值存放在Figure的Currenbje屬性中
Figure對象的屬性篇
(1)^是矩陣每個元素的冪乘,^是數的冪乘。(2)se(ndle)列出句柄值為ndle的對象的所有屬性 ge(ndle)除列出上述屬性外,還列出可以設置的屬性 rese(ndle)將所有屬性改為默認值
delee(ndle)刪除句柄值為ndle的圖形對象
(3)利用se(ndle,‘屬性名稱’)獲得句柄值為ndle的對象的屬性名稱下所有可設置的屬性值
se(g,'unis)得到[ines|enimeers|normlized|oins|{ixels}|rers],其中,大括號中是默認值
(4)lrese;將窗口關閉,并重新設置其屬性為默認值。(5)Closerequesn,有效值為字符串或函數句柄(前加@)當關閉繪圖窗口或離開lb時,就會定義Closerequesn定義的函數
(6)reen,當lb建立一個對象時(如為igure對象,即打開一個繪圖窗口),就會觸發reen所定義的llbk程序。如se(0,'deuligurereen','se(gbo,''inegerndle'',''o'')');即設置了根對象的默認值,使每次建立igure對象時,都會指定一個非整數的句柄值。(在用戶未指定句柄值時)
(7)將當前窗口中在鍵盤上按下的按鍵名顯示出來。se(g,'keyressn','ge(g,''urrenrer'')')(8)olor有效值為olorse olorse表 RGB簡稱 [110]y_yello [101]m_mgen [011]_yn [100]r_red [010]g_green [001]b_blue [111]_ie [000]k_blk(9)linse(,b,):初始b結束線性分段次數linse(,b)則默認100次
(10)Currenbje:有效值為圖形對象句柄值:返回繪圖窗口內當前被鼠標選取的對象的句柄值
(11)urrenPoin:有效值[x-坐標,Y-坐標]返回繪圖窗口中最后單擊鼠標的位置,用ge(g,'urrenoin')就會返回當前在窗口中單擊鼠標的位置(12)DeleeFn:有效值:字符串或函數句柄,刪除對象(這里為igure)時會觸發Deleen所定義的Cllbk程序。
(13)Dokonrols:有效值為ono,默認值on,控制窗口的嵌入效果是否可用。(14)Hies:有效值ono,決定能否用鼠標選取對象為當前對象。
(15)negerndle:有效值ono,決定Figure對象句柄值的類型為整數或浮點小數。(16)nerruible:有效值ono,執行過程中需要中斷程序而優先執行其他程序時要設該屬性為on。即nerruible屬性是用以控制當Cllbk執行時是否能被其他事件(如此時鼠標按下其他控制對象)而中斷,on是會中斷,o時會執行完當前Cllbk,再去執行其他Cllbk。(17)Keyressn:有效值為字串或函數句柄。當用戶在igure窗口中按下鍵盤的任意鍵時,就會執行Keyressn所定義的Cllbk程序。
igure('keyressn','rin(''當前按下鍵盤上的%鍵n'',ge(g,''urrenrer''))')在這個igure窗口中按下鍵盤上的按鍵時就會立即返回對應的字符,依據這個效果就可以決定當字符鍵被按下時所要執行的操作。
當這個屬性指定的值是一個函數句柄時,lb就會將這個函數視為一個結構,包含下列字段——rer(以當前鍵盤上按下的按鍵顯示的字符來當作結果),modiier(包含一個或多個識別鍵盤上按下按鍵字符名稱的細胞數組(如Crl,Al,Si等),key(顯示被按下的鍵)。
(18)WindoBuonDonFn:有效值為字符串或函數句柄
當鼠標在繪圖窗口內按下鼠標任意鍵時,將觸發WindoBuonDonFn所定義的Cllbk以產生相對應的操作。
(19)WindoBuonoionFn:有效值為字符串或函數句柄
當鼠標在繪圖窗口內按住鼠標任意鍵移動,將觸發WindoBuonoionFn所定義的Cllbk以產生相對應的操作。
(20)WindoBuonUFn:有效值為字符串或函數句柄
當鼠標在繪圖窗口內釋放鼠標任意鍵時,將觸發WindoBuonUFn所定義的Cllbk以產生相對應的操作。
(21)CurrenAxes有效值為當前坐標軸的句柄值,返回當前的坐標軸句柄值。假設某坐標軸句柄值為_,可以使用xes(_)或se(g,'urrenxes',_)這兩種方式,制定句柄值為_的坐標軸為當前坐標軸。
(22)CurrenCrer:有效值為任意字符,返回用戶在繪圖窗口中最后輸入的一個字符,即剛在鍵盤上按下的字符鍵將存儲到Currenrer中,一般于Keyressn合用。(23)Currenobje有效值為圖形對象的句柄值,返回繪圖窗口內當前被鼠標選取的對象的句柄值。
(24)有效值為兩元素的向量,[X坐標,Y坐標] 返回繪圖窗口中最后單擊鼠標的位置,與Windobuonmoionn,Windobuonun合用。使用ge(g,'urrenoin')就會返回當前在窗口中單擊鼠標的位置。
Axes對象的屬性
(1)ile('ne','olor','r');給坐標軸命名為ne,紅色 ile({'isile','s2'});命名為兩行的標題
(2)Unis:有效值為ixelsnormlizedinesenimeersoinsrers 決定各種位置屬性的度量單位,相對于窗口左下角為基準。當設置為Pixels時,以像素為單位;當設置為normlized時,以坐標為單位,屏幕的左下角為[0,0],右上角為[10,10]。
(3)gridon:在圖像中顯示網格。
(4)ildren:控制xes對象的子對象,即imgeliglinerenglesure和ex等對象,可通過ge(g,'ildren')來返回當前坐標軸的子對象構成的句柄值向量。
(5)字體屬性:
Fonngle字體角度(正常norml或斜體ilioblique)Fonnme字體名稱
onsize字體大小(單位由Fonunis決定)
onunis字體單位(oinsnormlizedinesenimeersixels)oneig字體粗細(normlboldligdemi)
gridlinesyle決定坐標軸網格線的樣式,‘-’為實線‘--’為虛線‘:’為點線‘-’為點虛線
lo(110);gridon;se(g,'gridlinesyle','-');將當前坐標軸顯示的網格線為點-虛線(6)lineid定義X,Y和Z軸的軸線寬度(以點單位定義)(7)NexPlo:有效值為dd|rele|releildren,默認為rele dd表示使用當前的坐標軸,把新的圖形對象加到此坐標軸中是一般保留的做法,rele表示重新設置坐標軸的所有屬性(Posiion除外),也就是在繪圖前會刪除當前坐標軸和它的子對象。releildren表示移除當前坐標軸中所有子對象,但不重新設置坐標軸的所有屬性
(8)uerosiion決定坐標軸外邊界的位置。由位置向量[le,boom,id,eig]組成,其中le,boom表示相對于繪圖窗口左下角的位置,id,eig表示區域尺寸,默認為[0011](9)Posiion由位置向量[le,boom,id,eig]組成,決定坐標軸位置
(10)Tg定義本坐標軸的卷展欄,因為每一個對象都有自己唯一的識別碼即g,以方便indobj函數查找坐標軸句柄值。
(11)visible決定坐標軸是否可見
(12)se(g,'xgrid','on')繪制X軸垂直網格線
se(g,'gridlinesyle','','lineid',3)設置網格線線條類型和寬度 se(g,'box','on')將圖軸方框繪制出來
(13)se(g,'xsle','liner');將X軸刻度設為線性 se(g,'ysle','log');將Y軸刻度設為對數
(14)dis()顯示一個數組,但不顯示其數組名稱 dis('CornsHy')dis(rnd(5,3))iresulsin CornsHy 021***9 *** *** *** *** Puse:use,byisel,uses-ilesosondioryouoressnykeybeoreoninuing 實例:lo(110);se(g,'ysle','log');dis('請按下Ener鍵');use se(g,'Ysle','liner');本例是說按下Ener鍵將Y軸刻度由對數改為線性。
(16)Xik,Yik,Zik:控制X,Y,Z軸坐標刻度記號的位置,即控制坐標軸上刻度記號的位置以及每隔多少值會到下一個刻度記號的位置,同時還需要配合Xiklbel、Yiklbel、Ziklbel屬性來調整。詳細見例程。
以下設置方式相同:
se(g,'Xiklbel',{'1';'10';'100'})se(g,'Xiklbel','1|10|100')se(g,'Xiklbel',[1;10;100])se(g,'Xiklbel',['1';'10';'100'])(17)Findobj:查找 Line對象
當用戶建立一個線對象時,就會觸發Creen所定義的Cllbk產生相對應的操作;同樣,若刪除一個線對象時,就會觸發DeleeFn所定義的Cllbk產生相對應的操作。以下程序建立一個線對象,并設置DeleeFn為一個題對話框,當刪除該線對象時,就會顯示其題對話框來詢用戶。
(1)liing:有效值為ono,默認值為on 設置坐標軸土筐是否可以剪輯,如果設為o,則繪制線對象時可超出坐標軸的圖框。(2)Lineid:有效值為純量(與向量相對,只有大小而無方向),點為單位。(3)rker:有效值為字符,決定Line對象的記號類型,有+,o,*,x,s,d,等(4)rkersize:有效值為純量,單位為點,rker的大小。
(5)Uonexmenu:有效值為uionexmenu對象的句柄值,定義與線對象相關聯的uionexmenu菜單,因此當用戶將該線對象的屬性Uionexenu設置為相關聯的uionexmenu對象的Tg名稱時,uionexmenu就可以在該線對象上單擊鼠標右鍵來顯示uionexmenu菜單。
(6)Tg:有效值為字符串,定義改線對象的卷展欄(即標記)(7)Tye:有效值為字符串(只讀),此處為’line‘字符串。
(8)Xd,Yd,Zd:有效值為坐標數組,指定產生線條的數據點,若為2D環境則Xd、Yd需要有相同數目的數據,而Zd為空矩陣;3D環境則Xd,Yd,Zd三者都需要有相同數目的數據。
例:x=05,y=x+10;line('xd',x,'yd',y);P對象
函數不想其他高級區域建立函數(ill和re),只是簡單地將對象添加到當前坐標軸中而已。
使用:(X,Y,C)
在當前的坐標軸中添加二維填充的對象,X和Y用以定義對象頂點的位置,若X,Y為矩陣,則lb按每一行的元素來產生多個多邊形。
例:x=[00;01;11];y=[11;22;21];z=[11;11;11];(x(1,1),y(1,1),z(1,1)為第一個面的第一個頂點,x(2,1),y(2,1),z(2,1)為第一個面的第二個頂點,以此類推)
olor(1,1,13)=[111];olor(1,2,13)=[777];(x,y,z,olor);(olor是一個1*2*3的三維矩陣)Sure對象
sure可以建立一個sure對象,sure是由矩陣數據所在的列索引值為X坐標,而行索引值為Y坐標,并且矩陣的每個元素值為Z坐標。
imge對象
imge(C)將矩陣C當作一個圖像來顯示,C的每一個元素定義一個圖像中矩陣線段的顏色。
imge(x,y,C)其中x與y為2元素的向量,分別指定X軸與Y軸卷展軸的圍。C為圖像矩陣。
ex對象(1)ex(x坐標,y坐標,'sring')在圖形中指定位置(x,y)顯示字符串sring。(2)Ediing有效值為ono,o時,用戶在執行GU操作時無法直接在該Tex對象上進行編輯,改為on后,可以進行編輯。
(3)HorizonlAlign有效值為leenerrig決定Tex對象中字符水平方向的對齊方式。(4)nerreer有效值為exnone,決定Tex對象中是否可用Tex字符注釋,當設置為Tex時,表示允許用戶能夠在Sring屬性下輸入Tex字符。以下為在窗口的[55]點位置處建立一個ex對象并且字體大小以16點來表示的一個方程式。(顯示的是一個二重積分)ex('inerreer','lex','sring','$$in_0^x!in_ydF(u,v)$$','osiion',[55],'onsize',16)(5)Sring有效值為字符串,表示要顯示出來的字符串是什么。
(6)verilAlignme有效值為omiddlebselineboom決定Tex對象垂直對齊的方式。下面加載一個例子,是ilovemlb論壇一個斑竹的回復 x=00510;>>y1=sin(x);>>y2=os(x);>>lo(x,y1,'r',x,y2,'g')>>indobj(g,'olor','r')不想要的曲線直接delee句柄就可以了
第三篇:MATLAB函數總結
MATLAB函數總結
Matlab有沒有求矩陣行數/列數/維數的函數? ndims(A)返回A的維數
size(A)返回A各個維的最大元素個數 length(A)返回max(size(A))[m,n]=size(A)如果A是二維數組,返回行數和列數 nnz(A)返回A中非0元素的個數
MATLAB的取整函數:fix(x), floor(x):,ceil(x), round(x)(1)fix(x): 截尾取整.>> fix([3.12-3.12])ans = 3-3(2)floor(x):不超過x 的最大整數.(高斯取整)
>> floor([3.12-3.12])ans = 3-4
(3)ceil(x): 大于x 的最小整數
>> ceil([3.12-3.12])ans = 4-3
(4)四舍五入取整
>> round(3.12-3.12)ans = 0
>> round([3.12-3.12])ans = 3-3 >>
如何用matlab生成隨機數函數 rand(1)rand(n):生成0到1之間的n階隨機數方陣 rand(m,n):生成0到1之間的m×n的隨機數矩陣(現成的函數)另外:
Matlab隨機數生成函數
betarnd 貝塔分布的隨機數生成器 binornd 二項分布的隨機數生成器 chi2rnd 卡方分布的隨機數生成器 exprnd 指數分布的隨機數生成器 frnd f分布的隨機數生成器 gamrnd 伽瑪分布的隨機數生成器 geornd 幾何分布的隨機數生成器 hygernd 超幾何分布的隨機數生成器 lognrnd 對數正態分布的隨機數生成器 nbinrnd 負二項分布的隨機數生成器 ncfrnd 非中心f分布的隨機數生成器 nctrnd 非中心t分布的隨機數生成器 ncx2rnd 非中心卡方分布的隨機數生成器 normrnd 正態(高斯)分布的隨機數生成器 poissrnd 泊松分布的隨機數生成器 raylrnd 瑞利分布的隨機數生成器 trnd 學生氏t分布的隨機數生成器 unidrnd 離散均勻分布的隨機數生成器 unifrnd 連續均勻分布的隨機數生成器 weibrnd 威布爾分布的隨機數生成器
一、MATLAB常用的基本數學函數
abs(x):純量的絕對值或向量的長度
angle(z):復數z的相角(Phase angle)
sqrt(x):開平方
real(z):復數z的實部
imag(z):復數z的虛部
conj(z):復數z的共軛復數
round(x):四舍五入至最近整數
fix(x):無論正負,舍去小數至最近整數
floor(x):地板函數,即舍去正小數至最近整數
ceil(x):天花板函數,即加入正小數至最近整數
rat(x):將實數x化為分數表示
rats(x):將實數x化為多項分數展開
sign(x):符號函數(Signum function)。
當x<0時,sign(x)=-1;
當x=0時,sign(x)=0;
當x>0時,sign(x)=1。
rem(x,y):求x除以y的馀數
gcd(x,y):整數x和y的最大公因數
lcm(x,y):整數x和y的最小公倍數
exp(x):自然指數
pow2(x):2的指數
log(x):以e為底的對數,即自然對數或
log2(x):以2為底的對數
log10(x):以10為底的對數
二、MATLAB常用的三角函數
sin(x):正弦函數
cos(x):馀弦函數
tan(x):正切函數
asin(x):反正弦函數
acos(x):反馀弦函數
atan(x):反正切函數
atan2(x,y):四象限的反正切函數
sinh(x):超越正弦函數
cosh(x):超越馀弦函數
tanh(x):超越正切函數
asinh(x):反超越正弦函數
acosh(x):反超越馀弦函數
atanh(x):反超越正切函數
三、適用於向量的常用函數有:
min(x): 向量x的元素的最小值
max(x): 向量x的元素的最大值
mean(x): 向量x的元素的平均值
median(x): 向量x的元素的中位數
std(x): 向量x的元素的標準差
diff(x): 向量x的相鄰元素的差
sort(x): 對向量x的元素進行排序(Sorting)
length(x): 向量x的元素個數
norm(x): 向量x的歐氏(Euclidean)長度
sum(x): 向量x的元素總和
prod(x): 向量x的元素總乘積
cumsum(x): 向量x的累計元素總和
cumprod(x): 向量x的累計元素總乘積
dot(x, y): 向量x和y的內積
cross(x, y): 向量x和y的外積
四、MATLAB的永久常數
i或j:基本虛數單位(即)
eps:系統的浮點(Floating-point)精確度
inf:無限大,例如1/0
nan或NaN:非數值(Not a number),例如0/0
pi:圓周率 p(= 3.1415926...)
realmax:系統所能表示的最大數值
realmin:系統所能表示的最小數值
nargin: 函數的輸入引數個數
nargin: 函數的輸出引數個數
五、MATLAB基本繪圖函數
plot: x軸和y軸均為線性刻度(Linear scale)
loglog: x軸和y軸均為對數刻度(Logarithmic scale)
semilogx: x軸為對數刻度,y軸為線性刻度
semilogy: x軸為線性刻度,y軸為對數刻度
六、plot繪圖函數的叁數
字元顏色字元圖線型態
y 黃色.點
k 黑色 o 圓
w 白色 x x
b 藍色 + +
g 綠色 * *
r 紅色-實線
c 亮青色 : 點線
m 錳紫色-.點虛線
--虛線
七、注解
xlabel('Input Value');% x軸注解
ylabel('Function Value');% y軸注解
title('Two Trigonometric Functions');% 圖形標題
legend('y = sin(x)','y = cos(x)');% 圖形注解
grid on;% 顯示格線八、二維繪圖函數
bar 長條圖
errorbar 圖形加上誤差范圍
fplot 較精確的函數圖形
polar 極座標圖
hist 累計圖
rose 極座標累計圖
stairs 階梯圖
stem 針狀圖
fill 實心圖
feather 羽毛圖
compass 羅盤圖
quiver 向量場圖
---------------------------- 附錄1 常用命令
附錄1.1 管理用命令函數名功能描述函數名功能描述
addpath 增加一條搜索路徑 rmpath 刪除一條搜索路徑
demo 運行Matlab演示程序 type 列出.M文件
doc 裝入超文本文檔 version 顯示Matlab的版本號
help 啟動聯機幫助 what 列出當前目錄下的有關文件
lasterr 顯示最后一條信息 whatsnew 顯示Matlab的新特性
lookfor 搜索關鍵詞的幫助 which 造出函數與文件所在的目錄
path 設置或查詢Matlab路徑
附錄1.2管理變量與工作空間用命令函數名功能描述函數名功能描述
clear 刪除內存中的變量與函數 pack 整理工作空間內存
disp 顯示矩陣與文本 save 將工作空間中的變量存盤
length 查詢向量的維數 size 查詢矩陣的維數
load 從文件中裝入數據 who,whos 列出工作空間中的變量名
附錄1.3文件與操作系統處理命令函數名功能描述函數名功能描述
cd 改變當前工作目錄 edit 編輯.M文件
delete 刪除文件 matlabroot 獲得Matlab的安裝根目錄
diary 將Matlab運行命令存盤 tempdir 獲得系統的緩存目錄
dir 列出當前目錄的內容 tempname 獲得一個緩存(temp)文件
!執行操作系統命令
附錄1.4窗口控制命令函數名功能描述函數名功能描述
echo 顯示文件中的Matlab中的命令 more 控制命令窗口的輸出頁面
format 設置輸出格式
附錄1.5啟動與退出命令函數名功能描述函數名功能描述
matlabrc 啟動主程序 quit 退出Matlab環境
startup
Matlab自啟動程序
附錄2 運算符號與特殊字符附錄
2.1運算符號與特殊字符函數名功能描述函數名功能描述
+ 加...續行標志
-減 , 分行符(該行結果不顯示)
* 矩陣乘;分行符(該行結果顯示)
.* 向量乘 % 注釋標志
^ 矩陣乘方!操作系統命令提示符
.^ 向量乘方 ' 矩陣轉置
kron 矩陣kron積.向量轉置
矩陣左除 = 賦值運算
/ 矩陣右除 == 關系運算之相等
.向量左除 ~= 關系運算之不等
./ 向量右除<關系運算之小于
: 向量生成或子陣提取<= 關系運算之小于等于
()下標運算或參數定義>關系運算之大于
[] 矩陣生成>= 關系運算之大于等于
{} &邏輯運算之與
.結構字段獲取符 | 邏輯運算之或
.點乘運算,常與其他運算符聯合使用(如.)~ 邏輯運算之非
xor 邏輯運算之異成附錄2.2邏輯函數函數名功能描述函數名功能描述
all 測試向量中所用元素是否為真 is*(一類函數)
檢測向量狀態.其中*表示一個確定的函數(isinf)
any 測試向量中是否有真元素 *isa 檢測對象是否為某一個類的對象
exist 檢驗變量或文件是否定義 logical 將數字量轉化為邏輯量
find 查找非零元素的下標
附錄3 語言結構與調試
附錄3.1編程語言函數名功能描述函數名功能描述
builtin 執行Matlab內建的函數 global 定義全局變量
eval 執行Matlab語句構成的字符串 nargchk 函數輸入輸出參數個數檢驗
feval 執行字符串指定的文件 script Matlab語句及文件信息
function Matlab函數定義關鍵詞
附錄3.2控制流程函數名功能描述函數名功能描述
break 中斷循環執行的語句 if 條件轉移語句
case 與switch結合實現多路轉移 otherwise 多路轉移中的缺省執行部分
else 與if一起使用的轉移語句 return 返回調用函數
elseif 與if一起使用的轉移語句 switch 與case結合實現多路轉移
end 結束控制語句塊 warning 顯示警告信息
error 顯示錯誤信息 while 循環語句
for 循環語句
附錄3.3交互輸入函數名功能描述函數名功能描述
input 請求輸入 menu 菜單生成
keyboard 啟動鍵盤管理 pause 暫停執行
附錄3.4面向對象編程函數名功能描述函數名功能描述
class 生成對象 isa 判斷對象是否屬于某一類
double 轉換成雙精度型 superiorto 建立類的層次關系
inferiorto 建立類的層次關系 unit8 轉換成8字節的無符號整數
inline 建立一個內嵌對象
附錄3.5調試函數名功能描述函數名功能描述
dbclear 清除調試斷點 dbstatus 列出所有斷點情況
dbcont 調試繼續執行 dbstep 單步執行
dbdown 改變局部工作空間內存 dbstop 設置調試斷點
dbmex 啟動對Mex文件的調試 sbtype 列出帶命令行標號的.M文件
dbquit 退出調試模式 dbup 改變局部工作空間內容
dbstack 列出函數調用關系
附錄4 基本矩陣與矩陣處理
附錄4.1基本矩陣函數名功能描述函數名功能描述
eye 產生單位陣 rand 產生隨機分布矩陣
linspace 構造線性分布的向量 randn 產生正態分布矩陣
logspace 構造等對數分布的向量 zeros 產生零矩陣
ones 產生元素全部為1的矩陣 : 產生向量
附錄4.2特殊向量與常量函數名功能描述函數名功能描述
ans 缺省的計算結果變量 non 非數值常量常由0/0或Inf/Inf獲得
computer 運行Matlab的機器類型 nargin 函數中參數輸入個數
eps 精度容許誤差(無窮小)nargout 函數中輸出變量個數
flops 浮點運算計數 pi 圓周率
i 復數單元 realmax 最大浮點數值
inf 無窮大 realmin 最小浮點數值
inputname 輸入參數名 varargin 函數中輸入的可選參數
j 復數單元 varargout 函數中輸出的可選參數
附錄4.3時間與日期函數名功能描述函數名功能描述
calender 日歷 eomday 計算月末
clock 時鐘 etime 所用時間函數
cputime 所用的CPU時間 now 當前日期與時間
date 日期 tic 啟動秒表計時器
datenum 日期(數字串格式)toc 讀取秒表計時器
datestr 日期(字符串格式)weekday 星期函數
datevoc 日期(年月日分立格式)
附錄4.4矩陣處理函數名功能描述函數名功能描述
cat 向量連接 reshape 改變矩陣行列個數
diag 建立對角矩陣或獲取對角向量 rot90 將矩陣旋轉90度
fliplr 按左右方向翻轉矩陣元素 tril 取矩陣的下三角部分
flipud 按上下方向翻轉矩陣元素 triu 取矩陣的上三角部分
repmat 復制并排列矩陣函數
附錄5 特殊矩陣函數名功能描述函數名功能描述
compan 生成伴隨矩陣 invhilb 生成逆hilbert矩陣
gallery 生成一些小的測試矩陣 magic 生成magic矩陣
hadamard 生成hadamard矩陣 pascal 生成pascal矩陣
hankel 生成hankel矩陣 toeplitz 生成toeplitz矩陣
hilb 生成hilbert矩陣 wilkinson 生成wilkinson特征值測試矩陣
附錄6 數學函數
附錄6.1三角函數函數名功能描述函數名功能描述
sin/asin 正弦/反正弦函數 sec/asec 正割/反正割函數
sinh/asinh 雙曲正弦/反雙曲正弦函數 sech/asech 雙曲正割/反雙曲正割函數
cos/acos 余弦/反余弦函數 csc/acsc 余割/反余割函數
cosh/acosh 雙曲余弦/反雙曲余弦函數 csch/acsch 雙曲余割/反雙曲余割函數
tan/atan 正切/反正切函數 cot/acot 余切/反余切函數
tanh/atanh 雙曲正切/反雙曲正切函數 coth/acoth 雙曲余切/反雙曲余切函數
atan2 四個象限內反正切函數
附錄6.2指數函數函數名功能描述函數名功能描述
exp 指數函數 log10 常用對數函數
log 自然對數函數 sqrt平方根函數
附錄6.3復數函數函數名功能描述函數名功能描述
abs 絕對值函數 imag 求虛部函數
angle 角相位函數 real 求實部函數
conj 共軛復數函數
附錄6.4數值處理函數名功能描述函數名功能描述
fix 沿零方向取整 round 舍入取整
floor 沿-∞方向取整 rem 求除法的余數
ceil 沿+∞方向取整 sign 符號函數
附錄6.5其他特殊數學函數函數名功能描述函數名功能描述
airy airy函數 erfcx 比例互補誤差函數
besselh bessel函數(hankel函數)erfinv 逆誤差函數
bessili 改進的第一類bessel函數 expint 指數積分函數
besselk 改進的第二類bessel函數 gamma gamma函數
besselj 第一類bessel函數 gammainc 非完全gamma函數
bessely 第二類bessel函數 gammaln gamma對數函數
beta beta函數 gcd 最大公約數
betainc 非完全的beta函數 lcm 最小公倍數
betaln beta對數函數 log2 分割浮點數
elipj Jacobi橢圓函數 legendre legendre伴隨函數
ellipke 完全橢圓積分 pow2 基2標量浮點數
erf 誤差函數 rat 有理逼近
erfc 互補誤差函數 rats 有理輸出
----------------------------- A a abs 絕對值、模、字符的ASCII碼值 acos 反余弦 acosh 反雙曲余弦 acot 反余切 acoth 反雙曲余切 acsc 反余割 acsch 反雙曲余割
align 啟動圖形對象幾何位置排列工具 all 所有元素非零為真 angle 相角
ans 表達式計算結果的缺省變量名 any 所有元素非全零為真 area 面域圖
argnames 函數M文件宗量名 asec 反正割 asech 反雙曲正割 asin 反正弦 asinh 反雙曲正弦 assignin 向變量賦值 atan 反正切 atan2 四象限反正切 atanh 反雙曲正切 autumn 紅黃調秋色圖陣 axes 創建軸對象的低層指令 axis 控制軸刻度和風格的高層指令 B b
bar 二維直方圖 bar3 三維直方圖 bar3h 三維水平直方圖 barh 二維水平直方圖
base2dec X進制轉換為十進制 bin2dec 二進制轉換為十進制 blanks 創建空格串 bone 藍色調黑白色圖陣 box 框狀坐標軸
break while 或for 環中斷指令 brighten 亮度控制
C c
capture(3版以前)捕獲當前圖形 cart2pol 直角坐標變為極或柱坐標 cart2sph 直角坐標變為球坐標 cat 串接成高維數組 caxis 色標尺刻度 cd 指定當前目錄 cdedit 啟動用戶菜單、控件回調函數設計工具 cdf2rdf 復數特征值對角陣轉為實數塊對角陣 ceil 向正無窮取整 cell 創建元胞數組
cell2struct 元胞數組轉換為構架數組 celldisp 顯示元胞數組內容 cellplot 元胞數組內部結構圖示
char 把數值、符號、內聯類轉換為字符對象 chi2cdf 分布累計概率函數 chi2inv 分布逆累計概率函數 chi2pdf 分布概率密度函數 chi2rnd 分布隨機數發生器 chol Cholesky分解 clabel 等位線標識 cla 清除當前軸
class 獲知對象類別或創建對象 clc 清除指令窗
clear 清除內存變量和函數 clf 清除圖對象 clock 時鐘
colorcube 三濃淡多彩交叉色圖矩陣 colordef 設置色彩缺省值 colormap 色圖 colspace 列空間的基 close 關閉指定窗口 colperm 列排序置換向量 comet 彗星狀軌跡圖 comet3 三維彗星軌跡圖 compass 射線圖 compose 求復合函數 cond(逆)條件數
condeig 計算特征值、特征向量同時給出條件數 condest 范-1條件數估計 conj 復數共軛 contour 等位線 contourf 填色等位線 contour3 三維等位線
contourslice 四維切片等位線圖 conv 多項式乘、卷積 cool 青紫調冷色圖 copper 古銅調色圖 cos 余弦 cosh 雙曲余弦 cot 余切 coth 雙曲余切
cplxpair 復數共軛成對排列 csc 余割 csch 雙曲余割 cumsum 元素累計和 cumtrapz 累計梯形積分 cylinder 創建圓柱
D d
dblquad 二重數值積分 deal 分配宗量
deblank 刪去串尾部的空格符 dec2base 十進制轉換為X進制 dec2bin 十進制轉換為二進制 dec2hex 十進制轉換為十六進制 deconv 多項式除、解卷 delaunay Delaunay 三角剖分 del2 離散Laplacian差分 demo Matlab演示 det 行列式
diag 矩陣對角元素提取、創建對角陣 diary Matlab指令窗文本內容記錄 diff 數值差分、符號微分
digits 符號計算中設置符號數值的精度 dir 目錄列表 disp 顯示數組
display 顯示對象內容的重載函數 dlinmod 離散系統的線性化模型
dmperm 矩陣Dulmage-Mendelsohn 分解 dos 執行DOS 指令并返回結果
double 把其他類型對象轉換為雙精度數值 drawnow 更新事件隊列強迫Matlab刷新屏幕 dsolve 符號計算解微分方程
E e
echo M文件被執行指令的顯示 edit 啟動M文件編輯器 eig 求特征值和特征向量 eigs 求指定的幾個特征值
end 控制流FOR等結構體的結尾元素下標 eps 浮點相對精度
error 顯示出錯信息并中斷執行
errortrap 錯誤發生后程序是否繼續執行的控制 erf 誤差函數 erfc 誤差補函數 erfcx 刻度誤差補函數 erfinv 逆誤差函數
errorbar 帶誤差限的曲線圖 etreeplot 畫消去樹 eval 串演算指令 evalin 跨空間串演算指令 exist 檢查變量或函數是否已定義 exit 退出Matlab環境 exp 指數函數
expand 符號計算中的展開操作 expint 指數積分函數 expm 常用矩陣指數函數 expm1 Pade法求矩陣指數 expm2 Taylor法求矩陣指數 expm3 特征值分解法求矩陣指數 eye 單位陣
ezcontour 畫等位線的簡捷指令 ezcontourf 畫填色等位線的簡捷指令 ezgraph3 畫表面圖的通用簡捷指令 ezmesh 畫網線圖的簡捷指令
ezmeshc 畫帶等位線的網線圖的簡捷指令 ezplot 畫二維曲線的簡捷指令 ezplot3 畫三維曲線的簡捷指令 ezpolar 畫極坐標圖的簡捷指令 ezsurf 畫表面圖的簡捷指令
ezsurfc 畫帶等位線的表面圖的簡捷指令
F f
factor 符號計算的因式分解 feather 羽毛圖 feedback 反饋連接 feval 執行由串指定的函數 fft 離散Fourier變換 fft2 二維離散Fourier變換 fftn 高維離散Fourier變換 fftshift 直流分量對中的譜 fieldnames 構架域名 figure 創建圖形窗 fill3 三維多邊形填色圖 find 尋找非零元素下標
findobj 尋找具有指定屬性的對象圖柄 findstr 尋找短串的起始字符下標 findsym 機器確定內存中的符號變量 finverse 符號計算中求反函數 fix 向零取整
flag 紅白藍黑交錯色圖陣 fliplr 矩陣的左右翻轉 flipud 矩陣的上下翻轉 flipdim 矩陣沿指定維翻轉 floor 向負無窮取整 flops 浮點運算次數 flow Matlab提供的演示數據
fmin 求單變量非線性函數極小值點(舊版)fminbnd 求單變量非線性函數極小值點 fmins 單純形法求多變量函數極小值點(舊版)fminunc 擬牛頓法求多變量函數極小值點 fminsearch 單純形法求多變量函數極小值點 fnder 對樣條函數求導 fnint 利用樣條函數求積分
fnval 計算樣條函數區間內任意一點的值 fnplt 繪制樣條函數圖形 fopen 打開外部文件 for 構成for環用 format 設置輸出格式 fourier Fourier 變換 fplot 返函繪圖指令 fprintf 設置顯示格式 fread 從文件讀二進制數據 fsolve 求多元函數的零點 full 把稀疏矩陣轉換為非稀疏陣 funm 計算一般矩陣函數 funtool 函數計算器圖形用戶界面 fzero 求單變量非線性函數的零點
G g
gamma 函數
gammainc 不完全函數 gammaln 函數的對數 gca 獲得當前軸句柄
gcbo 獲得正執行“回調”的對象句柄 gcf 獲得當前圖對象句柄 gco 獲得當前對象句柄 geomean 幾何平均值 get 獲知對象屬性 getfield 獲知構架數組的域 getframe 獲取影片的幀畫面 ginput 從圖形窗獲取數據 global 定義全局變量 gplot 依圖論法則畫圖 gradient近似梯度 gray 黑白灰度 grid 畫分格線
griddata 規則化數據和曲面擬合 gtext 由鼠標放置注釋文字
guide 啟動圖形用戶界面交互設計工具
H h
harmmean 調和平均值 help 在線幫助
helpwin 交互式在線幫助
helpdesk 打開超文本形式用戶指南 hex2dec 十六進制轉換為十進制 hex2num 十六進制轉換為浮點數 hidden 透視和消隱開關 hilb Hilbert矩陣
hist 頻數計算或頻數直方圖 histc 端點定位頻數直方圖 histfit 帶正態擬合的頻數直方圖 hold 當前圖上重畫的切換開關 horner 分解成嵌套形式 hot 黑紅黃白色圖 hsv 飽和色圖
I i
if-else-elseif 條件分支結構 ifft 離散Fourier反變換 ifft2 二維離散Fourier反變換 ifftn 高維離散Fourier反變換 ifftshift 直流分量對中的譜的反操作 ifourier Fourier反變換 i, j 缺省的“虛單元”變量 ilaplace Laplace反變換 imag 復數虛部 image 顯示圖象 imagesc 顯示亮度圖象 imfinfo 獲取圖形文件信息 imread 從文件讀取圖象 imwrite 把
imwrite 把圖象寫成文件 ind2sub 單下標轉變為多下標 inf 無窮大
info MathWorks公司網點地址 inline 構造內聯函數對象 inmem 列出內存中的函數名 input 提示用戶輸入 inputname 輸入宗量名 int 符號積分
int2str 把整數數組轉換為串數組 interp1 一維插值 interp2 二維插值 interp3 三維插值 interpn N維插值 interpft 利用FFT插值 intro Matlab自帶的入門引導 inv 求矩陣逆
invhilb Hilbert矩陣的準確逆 ipermute 廣義反轉置 isa 檢測是否給定類的對象 ischar 若是字符串則為真 isequal 若兩數組相同則為真 isempty 若是空陣則為真 isfinite 若全部元素都有限則為真 isfield 若是構架域則為真 isglobal 若是全局變量則為真 ishandle 若是圖形句柄則為真
ishold 若當前圖形處于保留狀態則為真 isieee 若計算機執行IEEE規則則為真 isinf 若是無窮數據則為真 isletter 若是英文字母則為真 islogical 若是邏輯數組則為真 ismember 檢查是否屬于指定集 isnan 若是非數則為真 isnumeric 若是數值數組則為真 isobject 若是對象則為真 isprime 若是質數則為真 isreal 若是實數則為真 isspace 若是空格則為真 issparse 若是稀疏矩陣則為真 isstruct 若是構架則為真
isstudent 若是Matlab學生版則為真 iztrans 符號計算Z反變換
J j , K k
jacobian 符號計算中求Jacobian 矩陣 jet 藍頭紅尾飽和色
jordan 符號計算中獲得 Jordan標準型 keyboard 鍵盤獲得控制權
kron Kronecker乘法規則產生的數組
L l
laplace Laplace變換 lasterr 顯示最新出錯信息 lastwarn 顯示最新警告信息
leastsq 解非線性最小二乘問題(舊版)legend 圖形圖例 lighting 照明模式 line 創建線對象 lines 采用plot 畫線色
linmod 獲連續系統的線性化模型 linmod2 獲連續系統的線性化精良模型 linspace 線性等分向量 ln 矩陣自然對數
load 從MAT文件讀取變量 log 自然對數 log10 常用對數 log2 底為2的對數 loglog 雙對數刻度圖形 logm 矩陣對數 logspace 對數分度向量 lookfor 按關鍵字搜索M文件 lower 轉換為小寫字母
lsqnonlin 解非線性最小二乘問題 lu LU分解
M m
mad平均絕對值偏差 magic 魔方陣
maple &nb, sp;運作 Maple格式指令 mat2str 把數值數組轉換成輸入形態串數組 material 材料反射模式 max 找向量中最大元素
mbuild 產生EXE文件編譯環境的預設置指令 mcc 創建MEX或EXE文件的編譯指令 mean 求向量元素的平均值 median 求中位數
menuedit 啟動設計用戶菜單的交互式編輯工具 mesh 網線圖 meshz 垂簾網線圖 meshgrid 產生“格點”矩陣
methods 獲知對指定類定義的所有方法函數 mex 產生MEX文件編譯環境的預設置指令 mfunlis 能被mfun計算的MAPLE經典函數列表 mhelp 引出 Maple的在線幫助 min 找向量中最小元素 mkdir 創建目錄
mkpp 逐段多項式數據的明晰化 mod 模運算
more 指令窗中內容的分頁顯示 movie 放映影片動畫
moviein 影片幀畫面的內存預置
mtaylor 符號計算多變量Taylor級數展開
N n
ndims 求數組維數 NaN 非數(預定義)變量 nargchk 輸入宗量數驗證 nargin 函數輸入宗量數 nargout 函數輸出宗量數 ndgrid 產生高維格點矩陣 newplot 準備新的缺省圖、軸 nextpow2 取最接近的較大2次冪 nnz 矩陣的非零元素總數 nonzeros 矩陣的非零元素 norm 矩陣或向量范數
normcdf 正態分布累計概率密度函數 normest 估計矩陣2范數
norminv 正態分布逆累計概率密度函數 normpdf 正態分布概率密度函數 normrnd 正態隨機數發生器
notebook 啟動Matlab和Word的集成環境 null 零空間
num2str 把非整數數組轉換為串
numden 獲取最小公分母和相應的分子表達式 nzmax 指定存放非零元素所需內存
O o
ode1 非Stiff 微分方程變步長解算器 ode15s Stiff 微分方程變步長解算器 ode23t 適度Stiff 微分方程解算器 ode23tb Stiff 微分方程解算器 ode45 非Stiff 微分方程變步長解算器 odefile ODE 文件模板
odeget 獲知ODE 選項設置參數
odephas2 ODE 輸出函數的二維相平面圖 odephas3 ODE 輸出函數的三維相空間圖 odeplot ODE 輸出函數的時間軌跡圖 odeprint 在Matlab指令窗顯示結果 odeset 創建或改寫 ODE選項構架參數值 ones 全1數組
optimset 創建或改寫優化泛函指令的選項參數值 orient 設定圖形的排放方式 orth 值空間正交化
P p
pack 收集Matlab內存碎塊擴大內存 pagedlg 調出圖形排版對話框 patch 創建塊對象
path 設置Matlab搜索路徑的指令 pathtool 搜索路徑管理器 pause 暫停
pcode 創建預解譯P碼文件 pcolor 偽彩圖 peaks Matlab提供的典型三維曲面 permute 廣義轉置 pi(預定義變量)圓周率 pie 二維餅圖 pie3 三維餅圖 pink 粉紅色圖矩陣 pinv 偽逆 plot平面線圖 plot3 三維線圖
plotmatrix 矩陣的散點圖 plotyy 雙縱坐標圖
poissinv 泊松分布逆累計概率分布函數 poissrnd 泊松分布隨機數發生器 pol2cart 極或柱坐標變為直角坐標 polar 極坐標圖
poly 矩陣的特征多項式、根集對應的多項式 poly2str 以習慣方式顯示多項式
poly2sym 雙精度多項式系數轉變為向量符號多項式 polyder 多項式導數 polyfit 數據的多項式擬合 polyval 計算多項式的值 polyvalm 計算矩陣多項式 pow2 2的冪
ppval 計算分段多項式
pretty 以習慣方式顯示符號表達式 print 打印圖形或SIMULINK模型 printsys 以習慣方式顯示有理分式 prism 光譜色圖矩陣
procread 向MAPLE輸送計算程序 profile 函數文件性能評估器 propedit 圖形對象屬性編輯器 pwd 顯示當前工作目錄
Q q
quad 低階法計算數值積分
quad8 高階法計算數值積分(QUADL)quit 推出Matlab 環境 quiver 二維方向箭頭圖 quiver3 三維方向箭頭圖
R r
rand 產生均勻分布隨機數 randn 產生正態分布隨機數 randperm 隨機置換向量 range 樣本極差 rank 矩陣的秩 rats 有理輸出
rcond 矩陣倒條件數估計 real 復數的實部
reallog 在實數域內計算自然對數 realpow 在實數域內計算乘方 realsqrt 在實數域內計算平方根 realmax 最大正浮點數 realmin 最小正浮點數 rectangle 畫“長方框” rem 求余數
repmat 鋪放模塊數組 reshape 改變數組維數、大小 residue 部分分式展開 return 返回
ribbon 把二維曲線畫成三維彩帶圖 rmfield 刪去構架的域 roots 求多項式的根 rose 數扇形圖 rot90 矩陣旋轉90度 rotate 指定的原點和方向旋轉
rotate3d 啟動三維圖形視角的交互設置功能 round 向最近整數圓整 rref 簡化矩陣為梯形形式
rsf2csf 實數塊對角陣轉為復數特征值對角陣 rsums Riemann和
S s
save 把內存變量保存為文件 scatter 散點圖 scatter3 三維散點圖 sec 正割 sech 雙曲正割
semilogx X軸對數刻度坐標圖 semilogy Y軸對數刻度坐標圖 series 串聯連接 set 設置圖形對象屬性 setfield 設置構架數組的域 setstr 將ASCII碼轉換為字符的舊版指令 sign 根據符號取值函數
signum 符號計算中的符號取值函數 sim 運行SIMULINK模型
simget 獲取SIMULINK模型設置的仿真參數 simple 尋找最短形式的符號解 simplify 符號計算中進行簡化操作
simset 對SIMULINK模型的仿真參數進行設置 simulink 啟動SIMULINK模塊庫瀏覽器 sin 正弦 sinh 雙曲正弦 size 矩陣的大小 slice 立體切片圖
solve 求代數方程的符號解 spalloc 為非零元素配置內存 sparse 創建稀疏矩陣
spconvert 把外部數據轉換為稀疏矩陣 spdiags 稀疏對角陣 spfun 求非零元素的函數值 sph2cart 球坐標變為直角坐標 sphere 產生球面
spinmap 色圖彩色的周期變化 spline 樣條插值
spones 用1置換非零元素 sprandsym 稀疏隨機對稱陣 sprank 結構秩 spring 紫黃調春色圖 sprintf 把格式數據寫成串 spy 畫稀疏結構圖 sqrt平方根 sqrtm 方根矩陣
squeeze 刪去大小為1的“孤維” sscanf 按指定格式讀串 stairs 階梯圖 std 標準差 stem 二維桿圖 step 階躍響應指令
str2double 串轉換為雙精度值 str2mat 創建多行串數組 str2num 串轉換為數 strcat 接成長串 strcmp 串比較 strjust 串對齊 strmatch 搜索指定串 strncmp 串中前若干字符比較 strrep 串替換
strtok 尋找第一間隔符前的內容 struct 創建構架數組
struct2cell 把構架轉換為元胞數組 strvcat 創建多行串數組 sub2ind 多下標轉換為單下標 subexpr 通過子表達式重寫符號對象 subplot 創建子圖
subs 符號計算中的符號變量置換 subspace 兩子空間夾角 sum 元素和
summer 綠黃調夏色圖 superiorto 設定優先級 surf 三維著色表面圖 surface 創建面對象 surfc 帶等位線的表面圖 surfl 帶光照的三維表面圖 surfnorm 空間表面的法線 svd 奇異值分解
svds 求指定的若干奇異值 switch-case-otherwise 多分支結構
sym2poly 符號多項式轉變為雙精度多項式系數向量 symmmd 對稱最小度排序 symrcm 反向Cuthill-McKee排序 syms 創建多個符號對象 T t
tan 正切 tanh 雙曲正切
taylortool 進行Taylor逼近分析的交互界面 text 文字注釋 tf 創建傳遞函數對象 tic 啟動計時器 title 圖名 toc 關閉計時器 trapz 梯形法數值積分 treelayout 展開樹、林 treeplot 畫樹圖 tril 下三角陣 trim 求系統平衡點 trimesh 不規則格點網線圖
trisurf 不規則格點表面圖 triu 上三角陣 try-catch 控制流中的Try-catch結構 type 顯示M文件 U u uicontextmenu 創建現場菜單 uicontrol 創建用戶控件 uimenu 創建用戶菜單
unmkpp 逐段多項式數據的反明晰化 unwrap 自然態相角 upper 轉換為大寫字母
V v
var 方差
varargin 變長度輸入宗量 varargout 變長度輸出宗量
vectorize 使串表達式或內聯函數適于數組運算 ver 版本信息的獲取 view 三維圖形的視角控制 voronoi Voronoi多邊形 vpa 任意精度(符號類)數值
W w
warning 顯示警告信息 what 列出當前目錄上的文件
whatsnew 顯示Matlab中 Readme文件的內容 which 確定函數、文件的位置 while 控制流中的While環結構 white 全白色圖矩陣 whitebg 指定軸的背景色 who 列出內存中的變量名 whos 列出內存中變量的詳細信息 winter 藍綠調冬色圖 workspace 啟動內存瀏覽器
X x , Y y , Z z
xlabel X軸名 xor 或非邏輯
yesinput 智能輸入指令 ylabel Y軸名 zeros 全零數組 zlabel Z軸名
zoom 圖形的變焦放大和縮小 ztrans 符號計算Z變換
第四篇:matlab制圖函數總結
Subplot(a,b,c)圖像位置函數,a表示分成的行數,b表示當前行的列數,c為位置序號。
Plot(x1,y1,’s1’,x2,y2,’s2’,……)二維繪圖函數,繪制一般曲線,參數x表示x軸量,y表示y軸量,s為曲線顏色及形狀參數。
Axis([x1,x2,y1,y2])二維繪圖函數,參數x1和x2為x軸初始及末尾值,y1和y2為y軸值。
Stair(x1,y1)二維繪圖函數,繪制臺階型曲線,參數x表示x軸量,y表示y軸量。
Hold on 保持之前的圖形,同時顯示之后的圖形。
[x,y,z]=cylinder(f(x),s)三維制圖函數,繪制柱狀立體圖,f(x)為邊界曲線函數,s為邊界曲線條數。
[x,y,z]=sphere(s)三圍制圖函數,繪制球狀立體圖,s為球體各個側面的圖塊數,默認為30。
Figure('toolbar','none',...%是否顯示工具欄,否
'name','制圖',...%對話框名稱,制圖
'NumberTitle','off',...%是否顯示對話框編號,否
'color','w',...%背景顏色,白色
'Resize','on',...%是否可調對話框大小,是
'Position',[300,100,700,600]);
%默認對話框大小及位置 對話框屬性編輯函數
第五篇:matlab心得
學習Matlab心得體會
學習Matlab已經有一段時間了,對Matlab編程有了一定的了解。下面談談自己近期的學習心得。
第一節的時候我們對Matlab有了初步的認識:Matlab是“矩陣實驗室(matrix laboratoy)”的縮寫,它是一種與數學水平密切相關的算法語言,專門針對科學、工程計算及繪圖的需求。Matlab的應用范圍非常廣,包括信號和圖像處理、通訊、控制系統設計、測試和處理、財務建模和分析以及計算機生物學等眾多應用領域。附加的工具箱擴展了Matlab環境,以解決這些領域的特定性問題。比如說在自動控制理論中用的比較多的是根軌跡,相平面,傳遞函數,拉普拉斯變換,乃氏曲線等。在電機控制里面還有很多仿真實驗,也經常用,對于輔助分析,也是很好用的。
我們已經學習過C語言,不難發現Matlab的編程基本語法學習起來很快的,和C語言很類似,而且支持C語言函數的,或者說函數就是用C語言編的。大一時學習線性代數,對矩陣又有了一定的了解,為今天學習Matlab打下了一定的基礎。從matlab的名字的來源可以看出,它以矩陣運算常見,在當今的科學計算中,幾乎無處不用矩陣運算,這是它的優勢得到了充分的體現。
隨著學習的課時的增加,我們對Matlab的有了深入而實質性的了解。首先我們學習了Matlab的數學運算、程序設計、程序調試、Matlab繪圖及圖形句柄,最后我們又學習了Matlab的圖形用戶界面設計。經過幾次實驗課,我們學會了M文件編程及程序調試,學會利用help這一命令對程序進行解釋。
Matlab是以解釋方式工作的,即它對每條語句解釋后立即執行,若有錯誤也立即做出反應,便于對程序進行修改,大大減輕了編程和調試的工作量。它靈活、方便,程序調試手段豐富,調試速度快。Matlab語言像Basic和C語言一樣規定了矩陣的算算術運算符、關系運算符、邏輯運算符、條件運算符及賦值運算符等。Matlab的繪圖功是十分方便的,在調用繪圖函數時調整自變量可繪制出不同顏色的點、線、復線或多重線,這是通用的編程語言所不及的。Matlab的工作環境主要由命令窗口、圖形窗口、和文本編輯窗口組成。
當然,matlab與其它計算機語言相比,有其獨特的優點。特點如下:Matlab把編輯、編譯、連接以及執行融為一體,加快了編寫、修改、和調試程序的速度,或者說是一種比VB還要簡單的語言。Matlab語言的內容極為豐富,它的各種函數都與數學領域有關,它的起點高,編程效率高,用戶使用方便,智能化程度高,人機交互性好,功能豐富,可擴展性強。
通過這段時間的理論學習及實驗,我覺得要提高matlab編程能力的方法有以下幾點:(1)利用help,look for等功能對程序進行編譯修改。(2)多上網查資料,上論壇,搜索帖子、發帖子問人(3)閱讀別人、特別是一些高級技術人員的程序,在閱讀的過程中進行學習,學習別人的編程方法。(4)還要有一本matlab的函數工具詞典,可以盡量多的熟悉matlab自帶的函數,因為matlab自帶的函數特別多,基本上能夠滿足一般的數據和矩陣的計算。當然了,正如所有的程序語言一樣,“3分課本7分上機”,一定要動手才行,不能光看。多想、多思考、多嘗試,才是正路。
記得上第一節課時,老師給我們放得ppt上有這樣一句話:學會Matlab將改變你的一生,網絡對你的改變將遠遠的超過一臺獨立的計算機!作為一名電氣工程及其自動化的一名學生,學好Matlab是非常有用的,擴展就業方向,為將來就業打下良好的基礎!最后,感謝老師您這么久以來對我們的諄諄教導!我們不會忘記您對我們的細心輔導,不會忘記您在我們瞌睡的時候給我們的講的故事??