預備知識-Matlab基礎知識_第1頁
預備知識-Matlab基礎知識_第2頁
預備知識-Matlab基礎知識_第3頁
預備知識-Matlab基礎知識_第4頁
預備知識-Matlab基礎知識_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第一講Matlab基礎知識

本次課的目的:

熟悉上機環(huán)境;了解并掌握Matlab的基本操作,并掌握基本的數(shù)學運算。

1.1Matlab概述:

Matlab來源于MatrixLaboratory,它的首創(chuàng)者是在數(shù)值代數(shù)領域頗具影響的Cleve

Moler博士(也是MathWorks的創(chuàng)始人之一)。Matlab本身是一-種科學計算軟件,專門以矩

陣的形式處理數(shù)據(jù)。它把高性能的計算與可視化集成在一起,同時提供了大量的內(nèi)置函數(shù),

來提供了一種高級的解釋型編程語言一一M語言。同時針對每一類問題開發(fā)了工具包

(Toolbox),并且大多都是開放的,這樣就使得工程技術人員、科研人員在使用Matlab的同

時可以很容易的對其擴充,這使其更具競爭力。

Matlab歷史:1984-2010,不同的版本不斷地完善。

Matlab優(yōu)點:

?編程簡單,類似于其他語言,如C

?集成度更高,擴展性更好

?數(shù)學問題數(shù)值解能力強大

?由Maple內(nèi)核構成的符號運算工具箱可以繼承Maple所有解析解的求解能力

?在數(shù)學、工程領域有各種“工具箱”

?強大的系統(tǒng)仿真能力,Simulink建模,在控制界是國際首選的計算機語言

Matlab的功能:

三大基本功能:數(shù)值計算、符號計算、圖形處理

程序設計與應用程序接口

MATLAB科學計算中的應用

在數(shù)值分析中的應用

多項式與插值、數(shù)據(jù)的曲線擬合

數(shù)值微分與數(shù)值積分

線性代數(shù)

非線性方程求根

微分方程

在最優(yōu)化問題中的應用

在概率統(tǒng)計中的應用

在偏微分方程解法中的應用

在復變函數(shù)中的應用

數(shù)學問題的非傳統(tǒng)解法

模糊邏輯與模糊推理

神經(jīng)網(wǎng)絡在數(shù)據(jù)擬合中的應用

遺傳算法在最優(yōu)化求解中的應用

在建模仿真中的應用

Matlab安裝:2009a,2009b以前的版本,安裝無需激活。2009a-2010b再安裝之后需要激

活。

介紹Matlab操作界面

打開Matlab后,有兒個窗口:CommandWindow(命令窗口);Workspace;CommandHistory.

CommandWindow:可以直接輸入命令行來實現(xiàn)計算或作圖功能。它也可以單獨顯

示。舉個例子:在命令窗口輸入

A=[l23;456;789]%(注釋符)創(chuàng)建矩陣A

輸出A=

123

456

789

(變量名,注釋,空格,逗號)

輸入A*3

ans=

369

121518

212427

(ans它是answer的縮寫。同時在Workspace中會有兩個變量:A,ans)

接下來輸入a=3.141592回車后輸出

a=3.141592

a=

3.141592000000000

輸入》formatshort

?a

a=

3.1416

(formatshort命令是數(shù)據(jù)顯示的控制命令,表示小數(shù)點后有4位有效數(shù)字,

formatlong,表示小數(shù)點有15位有效數(shù)字,類似的還有一些數(shù)據(jù)顯示格式的控制指令:

formatshorte表示用5位科學計數(shù)法表示,formatlonge表示用15位科學計數(shù)法表示)

a=3.1416e+000,(c=1.111le-001,),3.141592000000000e+000,

(2)常見的通用操作指令

Matlab提供了一些基本的操作指令,如查看、保存或刪除當前工作空間中的變量等。

clc清除CommandWindow,光標回到屏幕的左上角

clear清除Workspace中所有變量

who列出當前Workspace中的變量

whos列出當前Workspace中的變量和信息

deletev文件名,刪除磁盤中的指定文件

what列出當前目錄下的m文件和mat文件

clearall清除Workspace中所有變量和函數(shù)

help查詢所列命令的幫助信息

(3)CommandWindow中的標點符號

空格用于變量之間的分隔符及數(shù)組行元素之間的分隔符

逗號(,)用于要顯示計算結果的命令之間的分隔符;用于變量之間

的分隔符及數(shù)組行元素之間的分隔符

冒號(:)用于生成一維數(shù)組,還可以表示一維數(shù)組的全部元素和多

維數(shù)組某一維的全部元素。

分號(

;)用于不顯示計算結果命令行的結尾,用于不顯示計算結果

命令行之間的分隔符,用于數(shù)組元素行之間的分隔符

引號(一)表示字符串

(%)表示注釋,它后面的命令不執(zhí)行

([])用于構成向量和矩陣,用于函數(shù)輸出列表

(())運算的先后次序,用于函數(shù)輸入變量列表,引用數(shù)組元素

當前目錄(currentfolder;CurrentDirectory)

一般默認“Matlab/work”,單擊Matlab/bin/win32/matlab.exe則默認為

“Matlab/bin/win32”

Worspa陽工作空間瀏覽器窗口)

同時提供了保存(save,load等命令)

CommandHistory

它有很多實用的功能,如:單行或多行的復制(選中一copy),單行或多行命令的運行

(EvaluateSelection),雙擊某?行,執(zhí)行該行命令,方向

鍵的使用

Matlab的幫助系統(tǒng)

Matalb提供了數(shù)目繁多的命令和函數(shù),要把他們都記錄下來,很不現(xiàn)實??尚械霓k法是先

掌握一般的、基本的內(nèi)容,然后在實踐中不斷總結和積累,逐步掌握其他內(nèi)容。而通過軟件

系統(tǒng)本省提供的幫組系統(tǒng)來學習軟件的使用時非常有效的方法。其次可以利用網(wǎng)絡資源,如

Mathworks公司的主頁(),國內(nèi)也有很多網(wǎng)站有豐富的信息。

幫助命令:

要了解Matlab最簡潔的方式是在CommandWindow通過幫助命令對特定的內(nèi)容進行快速

查詢。常用的命令是help.

例如:help回車會出現(xiàn)許多內(nèi)容,如:

matlab\elfun-Elementarymathfunctions.

matlab\helptools-Helpcommands.

matlab\demos-Examplesanddemonstrations.

simulink\simulink-Simulink

finance\finance-FinancialToolbox

finance\calendar-FinancialToolboxcalendarfunctions.

finance\findemos-FinancialToolboxdemonstration

function.

finance\ftseries-FinancialToolboxTimesSeriesFunctions.

finderiv\finderiv-FinancialDerivativesToolbox

helpelfun回車后就會看見基本初等函數(shù):三角函數(shù)(Trigonometric,sincostan

cot,asin,acos,atan,acot,Exponential.exp,log,Iog2,log10,

pow2-Base2powerandscalefloatingpointnumber.

realpow-Powerthatwillerroroutoncomplexresult.

reallog-Naturallogarithmofrealnumber.

realsqrt-Squarerootofnumbergreaterthanorequaltozero.

sqrt-Squareroot.

nthroot-Realn-throotofrealnumbers.

nextpow2

realpow(3,2)

ans=

9

輸入helpdemos(會出現(xiàn)各種例子和演示,這是很好的學習方法,缺點需要時間耐心的看

完)

基本初等運算:放在1.2節(jié)講(注意它的特別之處)

1.2Matlab基本知識

實數(shù)的運算法則+-*/A;a+b,a-b,a*b,a/b,aAb(取a,b為具體的數(shù)計算)

abs(a)為數(shù)a的絕對值。

我們要學習常量的表示:數(shù)組和矩陣及其運算

數(shù)組(array)

1.一維數(shù)組的標識、訪問與賦值

一維數(shù)組本身就是一行向量。如何在Matlab中輸入一個數(shù)組呢?(或

者表示一個數(shù)組呢)看一個例子:

例子:輸入向量(1,2,3,4)

在CommadWindow窗口輸入:

[1234],然后回車得到

ans=

1234

注意:數(shù)組需要用使用方括號,數(shù)組的元素用空格隔開,也可以用逗

號隔開上述數(shù)組也可以在如下輸入:

[1,2,3,4]回車后看到答案是

ans=

1234

若令a=[l234](這是個賦值語句,把數(shù)組口234]給變量a).現(xiàn)在想查

詢a的第三個元素,可如下操作,在CommandWindow中輸入:

a=[l234];a(3)回車得到答案:

ans=

3

若查詢數(shù)組a的第二到第四個元素

輸入a(2:4)回車得到

a(2:4)

ans=

234

除了直接輸入外,最常用的用來產(chǎn)生相同增量的向量的方法是利用

算符。例如,在命令窗口輸入:

Z=l:5回車后得到

z=

12345

這是增量為1的數(shù)組,此為默認狀態(tài)。也可產(chǎn)生單位增量不是1

的如:

x=0:pi/4:似表示產(chǎn)生-一個0到pi的行向量,單位增量為pi/4)回車

后得到:

x=

00.78541.57082.35623.1416

2.多維數(shù)組(矩陣)的輸入,標識,訪問和賦值

手工輸入一個矩陣如:

A=[l23;456;789]回車得到

A=

123

456

789

是一個3乘3階的矩陣??梢钥闯觯啃性厥怯每崭駚矸指粼?

每行用分號“;”來換行。

利用函數(shù)輸入一些矩陣常用的如下:

ones(3)

ans=

111

111

111

數(shù)組和矩陣的四則運算。

(1)數(shù)組的加法a=[l,2],b=[3,4],顯然a+b=[4,6]

若a=[l25]b=[3,4],a+b不能相加

(2)數(shù)組的乘法、除法

若a=[l2],b=[3,4],輸入a*b會出錯。

有一種新的運算輸入a.*b

ans=38

表示數(shù)組的每個對應元素的乘積,做乘積后還是數(shù)

組。類似的還有例如a./b

ans=

1/31/2

“.八”如a.八2回車后得到

?a.A2

ans=

14

再輸入aJb,回車后得到

?a.Ab

ans=

116

(3)size(),這命令輸出數(shù)組或矩陣的維數(shù)

a=[l23],輸入size(a)得到

?size(a)

ans=

13

若輸入length(a)得到

length(a)

ans=

3

表示數(shù)組的“長度”,若是行向量,就是行數(shù);若是列向量,

就表示是列數(shù)

輸入a,得到是"

ans=

1

2

3

?length(a)

ans=

3

矩陣的運算.

加減乘分別用.Matlab還提供了除法(看幫助自己

學)Arithmeticoperators.

plus-Plus+

uplus-Unaryplus+

minus-Minus-

uminus-Unaryminus-

mtimes-Matrixmultiply*

times-Arraymultiply.*

mpower-MatrixpowerA

power-Arraypower.A

mldivide-Backslashorleftmatrixdivide\

mrdivide-Slashorrightmatrixdivide/

Idivide-LeftarraydivideA

rdivide-RightarraydivideJ

idivide-Integerdivisionwithroundingoption,

kron-Kroneckertensorproduct

Relationaloperators.

eq_Equal==

ne-Notequal~=

It-Lessthan<

gt-Greaterthan>

le-Lessthanorequal<=

ge-Greaterthanorequal>=

(轉(zhuǎn)置,輸入命令A,輸出后是矩陣A)

A=

123

456

B=

234

789

?A=B

ans=

000

000

?A~=B

ans=

111

111

類似的可以看到A<B,A>B,A<=B,A>=B

注意:

還有些能夠用函數(shù)生成的矩陣。如

zeros

如:B=zeros(n)%生成n階方陣

B=zeros(m,n)%生成m行n列矩陣

zeros(2,2,2)

ans(:,:,l)=

00

00

ans(:,:,2)=

00

00

函數(shù):eye

eye(n),eye(m,n),eye(size(A))生成單位陣

函數(shù):ones

ones(m),ones(m,n),ones(size(A))生成全一陣

注意:輸入的時候,m,n一定要帶入具體的數(shù)

幾種矩陣操作:改變它的形式、取出子矩陣、擴充矩陣和旋轉(zhuǎn)矩陣。其中

最重要的算符為“:”,它的作用是取出選定的行和列。

若A=[l,2,3;4,5,6;7,8,9],則A(:,l)表示第一歹U,輸出的是列向量。A(l,:)

表示的第一行,輸出的是第一行,是一個行向量。

A(:)(自己驗證)(輸出的是按列的方向拉成長長的1列(向量))

變形函數(shù)如下:fliplr,flipudjesh叩e,例子如下:

A=[l23;456],fliplr(A)輸出的結果是

A=

123

456

?fliplr(A)

ans=

321

654

flipud(A),

?flipud(A)

ans=

456

123

現(xiàn)在需要對矩陣A增加一行(或一列)該如何做呢?

A=[A;789]

A=[A;789]

A=

123

456

789

再增加一列有

?A=[A(l,:),10;A(2,:),ll;A(3,1),12]

A=

12310

45611

78912

看reshape命令,

reshape(A,2,6)

?reshape(A,2,6)

ans=

1753911

42861012

可以看出reshape命令是將矩陣的元素以列為單位進行重組,把原來的3

乘4階的矩陣變成了2成6階的矩陣。且按列展開。

對函數(shù)的運算問題

令a=[1,2,3],sin(a)即:

?sin(a)

ans=

0.84150.90930.1411

?sin(A)

ans=

0.84150.90930.1411-0.5440

-0.7568-0.9589-0.2794-1.0000

0.65700.98940.4121-0.5366

(4)矩陣的行列式,矩陣的秩,特征值,特征根,矩陣的逆運算

行列式:det(),如A=[l3;24].det(A).

矩陣的秩:rank(),rank(A)

矩陣的特征值、特征根運算d=eig(A),(d是一個列向量,當A非對稱

矩陣的時候,不-一定都是實數(shù))。[V,D]=eig(A),輸出的V是特征向量的矩陣

A=

10

0-1

?d=eig(A)

d=

-1

1

?[V,D]=eig(A)

V=

01

10

D=

-10

01

A*V==V*D

ans=

11

11

關于常量我們就講這么多,下面我們講變量

第一個問題就是變量名的問題。MATLAB語言的變量命名規(guī)則是:

(1)變量名必須是不含空格的單個詞;(2)變量名區(qū)分大小寫;

(3)變量名最多不超過19個字符;(4)變量名必須以字母打頭,之后可以

是任意字母、數(shù)字或下劃線,變量名中不允許使用標點符號。

Matlab保留的常量有如下:

特殊變量取值

ans用于結果的缺省變量名

Pi圓周率

計算機的最小數(shù),當和1相加就產(chǎn)生一個比

eps

1大的數(shù)

flops浮點運算數(shù)

inf無窮大,如1/0

NaN不定量,如0/0

i,Ji=j=7-1

nargin所用函數(shù)的輸入變量數(shù)目

nargout所用函數(shù)的輸出變量數(shù)目

realmin最小可用正實數(shù)

realmax最大可用正實數(shù)

對提高matlab編程能力的方法,我想主要有以下三個:

1.查help

2.多上上論壇,搜索帖子、發(fā)帖子問人

3.閱讀別人、特別是牛人的程序

當然了,正如所有的程序語言一樣,”3分課本7分上機”,?定要動手

才行,不能光看。多想、多思考、多嘗試,才是正路。

最后,整理一下常用的快捷鍵(用[]表示)或命令:

1.I.在命令窗LI(CommandWindow)中:

2.I)【上、下健】——切換到之前、之后的命令,可以重復按多次來達到你想要的命令

3.2)clc一一消除命令窗口顯示的語句,此命令并不清空當何工作區(qū)的變圻,僅僅是把辨幕上顯示出來的語句清除掉

4.3)clear——這個才是清空?前1.作區(qū)的變量命令,常用語句clearall來完成

5.4)[Tab](轉(zhuǎn)白版友心燈》在maUab@看到的:在command窗門,輸入'個命令的前幾個字符,然后按lab

鍵,會彈出前面含這兒個字符的所有命令,找到你要的命令,回車,就可以自動完成。目前討論結果是:mallab6.5版本中,

如果候選命令超過100個,則不圾示而在matlab7以后版本中,則沒有這個限制,均可正常提示

6.5)[Ctrl+C](?£ICtrl+Br^k])-------(轉(zhuǎn)自版友yangjin_ren)在嘩Uab程序運行過程中,可能由于程序編寫的失誤,導致

程序不停的運行.在命令窗口輸入“Ctrl+C”可以將運行的程序停下來,而不需要將整個Matlab程序關掉.不過進行此操作的前

提是能夠激活切換到命令窗口才行,呵呵。

2.在編輯器(Editor)中:

1.1)【Tab】(或【Cm+]】)一增加縮進(對多行有效)

2.2)【Ctrl”】一一減少縮進(對多行有效)

3.3)[Ctrl+lJ一一自動縮進(即自動排版,對多行有效)

4.4)[Ctrl+R]——注釋(對多行有效)

5.5)(Ctrl+T]—去掉注釋(對多行有效)

6.6)[Ctrl-B]―括號配對檢杳(對版本6.5有效,但版本7.0無效,不知道是取消了還是換「另外的快捷鍵,請大牛們指點,

其他版本沒有測試過)

7.7)[F12]——設置或取消斷點

8.8)[F5]—運行程序

第二講:Matlab繪圖------基本操作

可視化圖形比單純的數(shù)據(jù)更具可讀性,所包含的信息量也大,使用圖形來呈現(xiàn)實驗或運算結

果也更能夠增加說服力。

《一》:Matlab二維繪圖

首先,想打開一個圖形窗口。應用figure即可實現(xiàn)。

?figure

也可以打開多個圖形窗口,

?figure(1),figure(2)

畫二維圖形最常用的命令是plot函數(shù)。例如:

?x=-pi:0.01:pi;,y=sin(x);

?plot(x,y)

還可以對圖形打給圖形加上柵格線:

?girdon

事實上,plot函數(shù)畫圖時可以選擇,線型,線的顏色,在節(jié)點處的形狀。

?x="pi:0.1:pi;y=sin(x);

?plot(x,y;r-d')

其中,你r代表的是紅色,-代表的是實線,d代表的在節(jié)點上采用的是菱形。這些都需要

用英文狀態(tài)下的單引號括起來。

還可以表示其他的顏色,如y(黃色),m(紫色),c(青藍),r(纖色),g(綠色),b(藍色),

w(白色),k(黑色)。

線型:(表示點線)-.(虛點線)--(虛線)

記號類型.(表示點),。表示圈,x表示叉號,*表示星號,s表示正方形,d表示菱形,

p表示五角形,h表示六角形,v表示向上三角形,人表示向下三角形,〈表示向左三角形,>

表示向右三角形。

注意:線性,記號,顏色都需要用英文狀態(tài)的單引號括起來。

我們接下來看如何在一個圖形窗口中畫多個圖形。

首先把figure窗口分割成幾個部分,用subplot函數(shù)來實現(xiàn)。

我們來實現(xiàn)這樣的命令:

?subplot(2,1,1)

?plot(x,y,'r-v')

?subplot(2,1,2)

?plot(x,cos(x),'r-*')

可以看到subplot命令分別創(chuàng)建了兩個坐標系,(如何看創(chuàng)建兒個坐標系?就是看它的前兩

個參數(shù)2,1,這表示兩行一列共2個坐標系)

下面看如何進行圖形標注。

可以用命令來實現(xiàn),也可以在figure窗口使用它提供的編輯工具來實現(xiàn)。

?plot(x,cos(x),T?*')

?xlabelfx,)

?ylabel(y)

表示對圖形添加x軸標記和y軸標記

?title(,cos(x)r)

有時一張圖中需要畫多條曲線,為便于區(qū)分,可對圖中的曲線進行標注說明。用legend

函數(shù)來實現(xiàn)

?legend('cos(x),)

也可以用text函數(shù)來實現(xiàn),

?text(-l,0.5,'cos(x)')

注意(-1,0.5)表示加標注的位置,在橫坐標為-1縱坐標為0.5的位置上加標注。

接下來的問題是如何在同一個窗口畫多個圖形。有這樣幾種方法,從簡單到復雜的順序來介

紹:

如,要在同一個窗口畫出sin(x),cos(x)曲線,

可以使用holdon命令。

>>clf表示清除圖形窗口的內(nèi)容。

輸入如下的命令:

?clf

?x=-pi:0.1:pi

?plot(x,cos(x),k*)

?holdon

?plot(x,sin(x);r-d')

?gridon%表示加格線

第二種方法:用plot函數(shù)

?plot(x,cos(x),,r-*,,x,sin(x),,y-d,)

其他的二維繪圖命令:

繪制直方圖的命令為bar

例如x=[l2345];y=[21357]

?bar(x,y)

怎樣讓每個直方圖有不同的顏色呢?這個需要圖形的句柄函數(shù),這里先給出具體

答案。

x=U2345];產(chǎn)[32467]

?bar(x,y)

?b=bar(x,y);

?ch=get(b,'children');

?set(ch,'FaceVertexCData',[O0l;011;111;10l;010])

注意(set,get函數(shù)是對圖形句柄操作的一組命令,其中children,

,FaceVertexCData'是這兩個函數(shù)的參數(shù)選項)

?A=rand(3,2)%隨機生成一個矩陣3-by-2

A=

0.8147236863931790.913375856139019

0.9057919370756190.632359246225410

0.1269868162935060.097540404999410

?bar(A,'group')

這是一個按列畫圖的圖形

接下來看另一個函數(shù)fill

x=[l43];y=[7812]

fm(x,y,'r')

表示把由點(1,7)(4,8)(3,12)三個點圍城的三角形用紅色填充。

離散圖形的繪制主要的命令有stem,stair

?t=linspace(-2*pi,2*pi,10);

%generatesarowvectortof10pointslinearlyspacedbetweenandincluding-2*pi

and2*pi.

?h=stem(t,cos(t),'fiH',

?set(get(h,'BaseLine'),'LineStyle',':')

?set(h,'MarkerFaceColor','red')

?title('Thestems')

stem注意這是畫離散的圖形

stair是畫梯形圖

stairs

功能:繪制梯形圖。

stairs函數(shù)與stem函數(shù)類似,只是stem函數(shù)繪制豎條圖,而stairs函數(shù)用于

繪制梯形圖。例如輸入

x=linspace(-2*pi,2*pi,40);

stairs(x,sin(x))

當然還可以畫餅圖等,具體看幫助或者Matlab書籍。

關于坐標軸有如下命令可以使用:

坐標控制

函數(shù)的調(diào)用格式為:

axis([xminxmaxyminymaxzminzmax])

axis函數(shù)功能豐富,常用的用法還有:

axisequal縱、橫坐標軸采用等長刻度

axissquare產(chǎn)生正方形坐標系(缺省為矩形)

axisauto使用缺省設置

axisoff取消坐標軸

axison顯示坐標軸

gridon/off命令控制是畫還是不畫網(wǎng)格線,不帶參數(shù)的grid命令在兩種狀態(tài)之間

進行切換。

boxon/off命令控制是加還是不加邊框線,不帶參數(shù)的box命令在兩種狀態(tài)之間

進行切換。

現(xiàn)在看繪制三維圖形。

直觀的看一個例子:畫一個球體

?sphere

這是一個畫球體的命令,其結果為

畫一個xA2/l+yA2/2人2+z八2/3人2=1的這樣一個曲面的話,用如下命令:

?[x,y,z]=ellipsoid(0,0,0,1,2,3);%生成數(shù)據(jù),0,0,0表示中心,123表示半

徑?!穝urf(x,y,z)%生成曲面的命令。

為了顯示三維圖形,Matlab提供了豐富的三維繪圖函數(shù),包括三維數(shù)據(jù)的顯示、

空間曲線、曲面、分塊、填充及視角轉(zhuǎn)換、旋轉(zhuǎn)等功能操作。

1.類似二維圖形,可以用plot函數(shù)操作。調(diào)用的格式是:

?plot3(x,y,z,s),其中s代表線型,顏色,跟二維的一樣。

例如:

?t=0:pi/50:10*pi;

?plot3(t.*sin(t),t.*cos(t),t)

?plot3(t.*sin(t),t.*cos(t),t,'r-d')

同時,子圖,多圖的命令,仍然適合三維圖形。holdon;supplot()仍然適用。

2.網(wǎng)格圖和曲面圖

所謂的網(wǎng)格圖是把相鄰的數(shù)據(jù)點連接起來形成的網(wǎng)狀曲面。三維網(wǎng)格圖形成

的原理為:現(xiàn)在x-y平面上指定一個長方形區(qū)域,采用與坐標軸平行的直線

將其分格;計算矩形網(wǎng)格點上的函數(shù)值,即z的坐標,從而得到三維空間的

數(shù)據(jù)點;把這些三維的點,用曲線和曲面連接起來就得到網(wǎng)格圖。看如下例

子:

?[x,y,z]=peaks;

?mesh(x,y,z)

%peaks函數(shù)是用來生成三維高斯型分布的數(shù)據(jù)。網(wǎng)格圖的不同的線條有不

同向顏色,而且顏色隨著高度變化。Hiddenon;hiddenoff這兩個命令控制隱

藏效果。

mesh和plot3何起來用可以標記出一些重要的點。看下面這個例子:

?clear%清空變量

?[x,y]=meshgrid([-3:0.2:3]);%meshgrid表示把平面打成格子。

?z=peaks(x,y);

?mesh(x,y,z)

?holdon

?plot3(x,y,z,,x7MarkerSize,,3)

3.曲面圖

曲面圖示是把網(wǎng)格圖的每一小片填充成彩色表面。用到的函數(shù)是surf,它與

mesh的用法一樣。看個例子:

?[x,y,z]=peaks;

?surf(x,y,z)

常有光照效果的,個函數(shù),?surfl(x,y,z)

這是最基本的對圖形的處理,還有好多內(nèi)容,同學們要自己學習。還可以自

作動畫的。

下面我們來學習編程。

首先來學習符號變量。然后學習M文件;

在學習,M語言的幾種結構:循環(huán),選擇。

符號運算是由matlab符號數(shù)學工具箱提供的,是建立在Maple軟件基礎上的。

我先看一個例子:

我們輸入:

?sqrt(5)

?ans=2.2361

這是matalb標準的數(shù)值類型。

下面我們看怎樣得到符號對象。

?a=sym(5)

a=

5

?b=sqrt(5)

b=

5A(l/2)

現(xiàn)在把b轉(zhuǎn)化成數(shù)值型的可以用double(b)來實現(xiàn)。

那如何創(chuàng)建符號表達式呢?可以用sym(),syms()函數(shù)。例如:

?a=sym(Elpha)%符號串要用兩個英文狀態(tài)下的單引號來實現(xiàn)。

a=

alpha

用sym來實現(xiàn)符號表達式:

?gr=sym('l+sqrt(5)/2‘)

gr=

5A(l/2)/2+1

現(xiàn)在我想得到Uax"+bx+c,如何實現(xiàn)呢?

?symsabcx%一次生成多個符號變量

?f=sym(,a*xA2+b*x+c,)

f=

a*xA2+b*x+c

有時候輸出的符號表達式很復雜,可用函數(shù)simplify。函數(shù)來化簡結果。

下面看一下符號矩陣:

?s=sym(,[abc;def;ghj]()

s=

[a,b,c]

[d,e,f]

[&h,j]

?det(s)

ans=

b*f*g-a*f*h+c*d*h-c*e*g+a*e*j-b*d*j

?eig(s)

ans=

a/3+e/3+j/3+(((((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6-(a+e+

j)A3/27+(a*f*h)/2-(b*/g)/2-(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+(b*d*j)/2)A2-

((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-(e*j)/3+(a+e+j)A2/9)A3)A(l/2)

-((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6+(a+e+j)A3/27-(a*f*h)/2+

(b*f*g)/2+(c*d*h)/2-(c*e*g)/2+(a*e*j)/2-(b*d*j)/2)A(l/3)+((b*d)/3-

(a*e)/3+(c*g)/3-(a*j)/3+(伊h)/3-(e*j)/3+(a+e+j)A2/9)/(((((a+e+j)*(a*e-

b*d-c*g+a*j-儼h+e*j))/6-(a+e+j)A3/27+(a*f*h)/2-(b*f*g)/2-

(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+(b*d*j)/2)A2-((b*d)/3-(a*e)/3+(c*g)/3-

(a*j)/3+(f*h)/3-(e*j)/3+(a+e+j)A2/9)A3)A(l/2)-((a+e+j)*(a*e-b*d-c*g

+a*j-f*h+e*j))/6+(a+e+j)A3/27-(a*f*h)/2+(b*f*g)/2+(c*d*h)/2-

(c*e*g)/2+(a*e*j)/2-(b*d*j)/2)A(l/3)

a/3+e/3+j/3-(((((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6-(a+e+

j)A3/27+(a*f*h)/2-(b*/g)/2-(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+(b*d*j)/2)A2-

((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+(£*h)/3-(e*j)/3+(a+e+j)A2/9)A3)A(l/2)

?((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6+(a+e+j)A3/27-(a*f*h)/2+

(b*f*g)/2+(c*d*h)/2-(c*e*g)/2+(a*e*j)/2-(b*d*j)/2)A(l/3)/2-((b*d)/3-

(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-(e*j)/3+(a+e+j)A2/9)/(2*(((((a+e+

j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6-(a+e+j)A3/27+(a*f*h)/2-(b*f*g)/2-

(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+(b*d*j)/2)A2-((b*d)/3-(a*e)/3+(c*g)/3-

(a*j)/3+(f*h)/3-(e*j)/3+(a+e+j)A2/9)A3)A(l/2)-((a+e+j)*(a*e-b*d-c*g

+a*j-/h+e*j))/6+(a+e+j)A3/27-(a*f*h)/2+(b*#g)/2+(c*d*h)/2-

(c*e*g)/2+(a*e*j)/2-(b*d*j)/2)A(l/3))-(3A(l/2)*((((((a+e+j)*(a*e-b*d-

c*g+a*j-f*h+e*j))/6-(a+e+j)A3/27+(a*f*h)/2-(b*f*g)/2-(c*d*h)/2+

(c*e*g)/2-(a*e*j)/2+(b*d*j)/2)A2-((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+

(f*h)/3-(e*j)/3+(a+e+j)A2/9)A3)A(l/2)-((a+e+j)*(a*e-b*d-c*g+a*j-

f*h+e*j))/6+(a+e+j)A3/27-(a*f*h)/2+(b*f*g)/2+(c*d*h)/2-(c*e*g)/2+

(a*e*j)/2-(b*d*j)/2)A(l/3)-((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-

(e*j)/3+(a+e+j)A2/9)/(((((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6-(a+

e+j)A3/27+(a*f*h)/2-(b*f*g)/2-(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+

(b*d*j)/2)A2-((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-(e*j)/3+(a+e+

j)A2/9)A3)A(l/2)-((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6+(a+e+

j)A3/27-(a*儼h)/2+(b*P1cg)/2+(c*d*h)/2-(c*e*g)/2+(a*e*j)/2-

(b*d*j)/2)A(l/3))*i)/2

a/3+e/3+j/3-(((((a+e+j)*(a*e-b*d-c*g+a*j-f*h

太多了,簡化一下:

simplify(ans)

ans=

a/3+e/3+j/3+(((((a+e+j)*(a*e-b*d-c*g+a*j-f^h+e*j))/6-(a+e+

j)A3/27+(a*f*h)/2-(b*f*g)/2-(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+(b*d*j)/2)A2-

((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-(e*j)/3+(a+e+j)A2/9)A3)A(l/2)

-((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6+(a+e+j)A3/27-(a*f*h)/2+

(b*f*g)/2+(c*d*h)/2-(c*e*g)/2+(a*e*j)/2-(b*d*j)/2)A(l/3)+((b*d)/3-

(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-(e*j)/3+(a+e+j)A2/9)/(((((a+e+j)*(a*e-

b*d-c*g+a*j-f*h+e*j))/6-(a+e+j)A3/27+(a*f*h)/2-(b*f*g)/2-

(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+(b*d*j)/2)A2-((b*d)/3-(a*e)/3+(c*g)/3-

(a*j)/3+(f*h)/3-(e*j)/3+(a+e+j)A2/9)A3)A(l/2)-((a+e+j)*(a*e-b*d-c*g

+a*j-f*h+e*j))/6+(a+e+j)A3/27-(a*f*h)/2+(b*f*g)/2+(c*d*h)/2-

(c*e*g)/2+(a*e*j)/2-(b*d*j)/2)A(l/3)

a/3+e/3+j/3-(3A(l/2)*(((((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6-(a

+e+j)A3/27+(a*f*h)/2-(b*f*g)/2-(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+

(b*d*j)/2)A2-((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-(e*j)/3+(a+e+

j)A2/9)A3)A(l/2)-((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6+(a+e+

j)A3/27-(a*f*h)/2+(b*/g)/2+(c*d*h)/2-(c*e*g)/2+(a*e*j)/2-

(b*d*j)/2)A(l/3)*i)/2-(((((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6-(a+e

+j)A3/27+(a*f*h)/2-(b*f*g)/2-(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+

(b*d*j)/2)A2-((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-(e*j)/3+(a+e+

j)A2/9)A3)A(l/2)-((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6+(a+e+

j)A3/27-(a*仔h)/2+(b*f*g)/2+(c*d*h)/2-(c*e*g)/2+(a*e*j)/2-

(b*d*j)/2)A(l/3)/2-((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-(e*j)/3+(a+

e+j)A2/9)/(2*(((((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6-(a+e+

j)A3/27+(a*f*h)/2-(b*/g)/2-(c*d*h)/2+(c*e*g)/2-(a*e*j)/2+(b*d*j)/2)A2-

((b*d)/3-(a*e)/3+(c*g)/3-(a*j)/3+(f*h)/3-(e*j)/3+(a+e+j)A2/9)A3)A(l/2)

-((a+e+j)*(a*e-b*d-c*g+a*j-f*h+e*j))/6+(a+e+j)A3/27-(a*f*h)/2+

(b*f*g)/2+(c*d*h)/2-(c*e*g)/2+(a*e*j)/2-(b*d*j)/2)A(l/3))+

(3A(l/2)*((b*d)/3-(a*e)

溫馨提示

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

評論

0/150

提交評論