




已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
MATLAB 中的常用操作符其實(shí)這些是MATLAB 幫助文件中的內(nèi)容,可以利用help 命令知道的。Arithmetic operators.plusPlus +uplusUnary plus +minusMinusuminusUnary minusmtimesMatrix multiply *timesArray multiply .*mpowerMatrix power powerArray power .mldivideBackslash or left matrix divide mrdivideSlash or right matrix divide /ldivideLeft array divide .rdivideRight array divide ./kronKronecker tensor product kronRelational operators.eqEqual =neNot equal =ltLess than leLess than or equal =Logical operators.Shortcircuit logical AND &Shortcircuit logical OR |and Element wise logical AND &or Element wise logical OR |notLogical NOT xorLogical EXCLUSIVE ORanyTrue if any element of vector is nonzeroallTrue if all elements of vector are nonzeroSpecial characters.colonColon :parenParentheses and subscripting ( )parenBrackets parenBraces and subscripting punctFunction handle creation punctDecimal point .punctStructure field access .punctParent directory .punctContinuation .punctSeparator ,punctSemicolon ;punctComment %punctInvoke operating system command !punctAssignment =punctQuote transposeTranspose .ctransposeComplex conjugate transpose horzcatHorizontal concatenation ,vertcatVertical concatenation ;subsasgnSubscripted assignment ( ), ,.subsrefSubscripted reference ( ), ,.subsindexSubscript indexBitwise operators.bitand Bit wise AND.bitcmpComplement bits.bitor Bit wise OR.bitmaxMaximum floati ng point integer.bitxor Bit wise XOR.bitsetSet bit.bitgetGet bit.bitshift Bit wise shift.Set operators.unionSet union.uniqueSet ersectSet intersection.setdiffSet difference.setxorSet exclusive or.ismemberTrue for set memberMATLAB 程式設(shè)計(jì)與應(yīng)用1-1、基本運(yùn)算與函數(shù)在MATLAB 下進(jìn)行基本數(shù)學(xué)運(yùn)算,只需將運(yùn)算式直接打入提示號(hào)()之後,并按入Enter鍵即可。例如:(5*2+1.3-0.8)*10/25ans =4.2000MATLAB 會(huì)將運(yùn)算結(jié)果直接存入一變數(shù)ans,代表MATLAB 運(yùn)算後的答案 (Answer),并顯示其數(shù)值於螢?zāi)簧?。(為?jiǎn)便起見(jiàn),在下述各例中,我 們不再印出MATLAB 的提示號(hào)。)=小提示:是MATLAB 的提示符號(hào)(Prompt),但在PC 中文視窗系統(tǒng)下,由於編碼方式不同,此提示符號(hào)常會(huì)消失不見(jiàn),但這并不會(huì)影響到MATLAB 的運(yùn)算結(jié)果。=我們也可將上述運(yùn)算式的結(jié)果設(shè)定給另一個(gè)變數(shù)x:x = (5*2+1.3-0.8)*102/25x =42此時(shí)MATLAB 會(huì)直接顯示x 的值。由上例可知,MATLAB 認(rèn)識(shí)所有一般常用到的加(+)、減(-)、乘(*)、除(/)的數(shù)學(xué)運(yùn)算符號(hào),以及冪次運(yùn)算 ()。小提示:MATLAB 將所有變數(shù)均存成double 的形式,所以不需經(jīng)過(guò)變數(shù)宣告(Variable declaration)。MATLAB 同時(shí)也會(huì)自動(dòng)進(jìn)行記憶體的使用和回收,而不必像C 語(yǔ)言,必須由使用者一一指定。這些功能使的MATLAB 易學(xué)易用,使用者可專(zhuān)心致力於撰寫(xiě)程式,而不必被軟體枝節(jié)問(wèn)題所干擾。 若不想讓MATLAB 每次都顯示運(yùn)算結(jié)果,只需在運(yùn)算式最後加上分號(hào)(;)即可,如下例:y = sin(10)*exp(-0.3*42);若要顯示變數(shù)y 的值,直接鍵入y 即可:yy =-0.0045在上例中,sin 是正弦函數(shù),exp 是指數(shù)函數(shù),這些都是MATLAB 常用到的數(shù)學(xué)函數(shù)。下表即為MATLAB 常用的基本數(shù)學(xué)函數(shù)及三角函數(shù):=小整理:MATLAB 常用的基本數(shù)學(xué)函數(shù)abs(x):純量的絕對(duì)值或向量的長(zhǎng)度angle(z):復(fù)數(shù)z 的相角(Phase angle)sqrt(x):開(kāi)平方real(z):復(fù)數(shù)z 的實(shí)部imag(z):復(fù)數(shù)z 的虛部conj(z):復(fù)數(shù)z 的共軛復(fù)數(shù)round(x):四舍五入至最近整數(shù)fix(x):無(wú)論正負(fù),舍去小數(shù)至最近整數(shù)floor(x):地板函數(shù),即舍去正小數(shù)至最近整數(shù)ceil(x):天花板函數(shù),即加入正小數(shù)至最近整數(shù)rat(x):將實(shí)數(shù)x 化為分?jǐn)?shù)表示rats(x):將實(shí)數(shù)x 化為多項(xiàng)分?jǐn)?shù)展開(kāi)sign(x):符號(hào)函數(shù) (Signum function)。當(dāng)x0 時(shí),sign(x)=1。rem(x,y):求x 除以y 的馀數(shù)gcd(x,y):整數(shù)x 和y 的最大公因數(shù)lcm(x,y):整數(shù)x 和y 的最小公倍數(shù)exp(x):自然指數(shù)pow2(x):2 的指數(shù)log(x):以e 為底的對(duì)數(shù),即自然對(duì)數(shù)或log2(x):以2 為底的對(duì)數(shù)log10(x):以10 為底的對(duì)數(shù)=小整理:MATLAB 常用的三角函數(shù)sin(x):正弦函數(shù)cos(x):馀弦函數(shù)tan(x):正切函數(shù)asin(x):反正弦函數(shù)acos(x):反馀弦函數(shù)atan(x):反正切函數(shù)atan2(x,y):四象限的反正切函數(shù)sinh(x):超越正弦函數(shù)cosh(x):超越馀弦函數(shù)tanh(x):超越正切函數(shù)asinh(x):反超越正弦函數(shù)acosh(x):反超越馀弦函數(shù)atanh(x):反超越正切函數(shù)=變數(shù)也可用來(lái)存放向量或矩陣,并進(jìn)行各種運(yùn)算,如下例的列向量(Row vector)運(yùn)算:x = 1 3 5 2;y = 2*x+1y =3 7 11 5=小提示:變數(shù)命名的規(guī)則1.第一個(gè)字母必須是英文字母2.字母間不可留空格3.最多只能有19 個(gè)字母,MATLAB 會(huì)忽略多馀字母=我們可以隨意更改、增加或刪除向量的元素:y(3) = 2 % 更改第三個(gè)元素y =3 7 2 5y(6) = 10 % 加入第六個(gè)元素y =3 7 2 5 0 10y(4) = % 刪除第四個(gè)元素,y =3 7 2 0 10在上例中,MATLAB 會(huì)忽略所有在百分比符號(hào)(%)之後的文字,因此百分比之後的文字均可視為程式的注解(Comments)。MATLAB 亦可取出向量的一個(gè)元素或一部份來(lái)做運(yùn)算:x(2)*3+y(4) % 取出x 的第二個(gè)元素和y 的第四個(gè)元素來(lái)做運(yùn)算ans =9y(2:4)-1 % 取出y 的第二至第四個(gè)元素來(lái)做運(yùn)算ans =6 1 -1在上例中,2:4 代表一個(gè)由2、3、4 組成的向量,同樣的方法可用於產(chǎn)生公差為1 的等差數(shù)列:x = 7:16x =7 8 9 10 11 12 13 14 15 16若不希望公差為1,則可將所需公差直接至於4 與13 之間:x = 7:3:16 % 公差為3 的等差數(shù)列x =7 10 13 16事實(shí)上,我們可利用linspace 來(lái)產(chǎn)生任意的等差數(shù)列:x = linspace(4, 10, 6) % 等差數(shù)列:首項(xiàng)為4,末項(xiàng)為10,項(xiàng)數(shù)為6x =4.0000 5.2000 6.4000 7.6000 8.8000 10.0000若對(duì)MATLAB 函數(shù)用法有疑問(wèn),可隨時(shí)使用help 來(lái)尋求線(xiàn)上支援(on-linehelp):help linspaceLINSPACE Linearly spaced vector.LINSPACE(x1, x2) generates a row vector of 100 linearlyequally spaced points between x1 and x2.LINSPACE(x1, x2, N) generates N points between x1 and x2.equally spaced points between x1 and x2.LINSPACE(x1, x2, N) generates N points between x1 and x2.See also LOGSPACE, :.=小整理:MATLAB 的查詢(xún)命令help:用來(lái)查詢(xún)已知命令的用法。例如已知inv 是用來(lái)計(jì)算反矩陣,鍵入 help inv 即可得知有關(guān)inv 命令的用法。(鍵入help help 則顯示help 的用法,請(qǐng)?jiān)嚳纯矗。﹍ookfor:用來(lái)尋找未知的命令。例如要尋找計(jì)算反矩陣的命令,可鍵入lookfor inverse,MATLAB 即會(huì)列出所有和關(guān)鍵字inverse 相關(guān)的指令。找到所需的命令後,即可用help 進(jìn)一步找出其用法。(lookfor 事實(shí)上是對(duì)所有在搜尋路徑下的M 檔案進(jìn)行關(guān)鍵字對(duì)第一注解行的比對(duì),詳見(jiàn)後敘。)=Matlab 入門(mén)教程-基本運(yùn)算與函數(shù)(二)將列向量轉(zhuǎn)置(Transpose)後,即可得到行向量(Column vector):z = xz =4.00005.20006.40007.60008.800010.0000不論是行向量或列向量,我們均可用相同的函數(shù)找出其元素個(gè)數(shù)、最大值、最小值等:length(z) % z 的元素個(gè)數(shù)ans =6max(z) % z 的最大值ans =10min(z) % z 的最小值ans =4=小整理:適用於向量的常用函數(shù)有:min(x): 向量x 的元素的最小值max(x): 向量x 的元素的最大值mean(x): 向量x 的元素的平均值median(x): 向量x 的元素的中位數(shù)std(x): 向量x 的元素的標(biāo)準(zhǔn)差diff(x): 向量x 的相鄰元素的差sort(x): 對(duì)向量x 的元素進(jìn)行排序(Sorting)length(x): 向量x 的元素個(gè)數(shù)norm(x): 向量x 的歐氏(Euclidean)長(zhǎng)度sum(x): 向量x 的_元素總和prod(x): 向量x 的元素總乘積cumsum(x): 向量x 的累計(jì)元素總和cumprod(x): 向量x 的累計(jì)元素總乘積dot(x, y): 向量x 和y 的內(nèi)積cross(x, y): 向量x 和y 的外積(大部份的向量函數(shù)也可適用於矩陣,詳見(jiàn)下述。)若要輸入矩陣,則必須在每一列結(jié)尾加上分號(hào)(;),如下例:A = 1 2 3 4; 5 6 7 8; 9 10 11 12;AA =1 2 3 45 6 7 89 10 11 12同樣地,我們可以對(duì)矩陣進(jìn)行各種處理:A(2,3) = 5 % 改變位於第二列,第三行的元素值A(chǔ) =1 2 3 45 6 5 89 10 11 12B = A(2,1:3) % 取出部份矩陣BB =5 6 5A = A B % 將B 轉(zhuǎn)置後以行向量并入AA =1 2 3 4 55 6 5 8 69 10 11 12 5A(:, 2) = % 刪除第二行(:代表所有列)A =1 3 4 55 5 8 69 11 12 5A = A; 4 3 2 1 % 加入第四列A =1 3 4 55 5 8 69 11 12 54 3 2 1A(1 4, :) = % 刪除第一和第四列(:代表所有行)A =5 5 8 69 11 12 5這幾種矩陣處理的方式可以相互疊代運(yùn)用,產(chǎn)生各種意想不到的效果,就看各位的巧思和創(chuàng)意。小提示:在MATLAB 的內(nèi)部資料結(jié)構(gòu)中,每一個(gè)矩陣都是一個(gè)以行為主(Column-oriented)的陣列(Array)因此對(duì)於矩陣元素的存取,我們可用一維或二維的索引(Index)來(lái)定址。舉例來(lái)說(shuō),在上述矩陣A 中,位於第二列、第三行的元素可寫(xiě)為A(2,3)(二維索引)或A(6)(一維索引,即將所有直行進(jìn)行堆疊後的第六個(gè)元素)。此外,若要重新安排矩陣的形狀,可用reshape 命令:B = reshape(A, 4, 2) % 4 是新矩陣的列數(shù),2 是新矩陣的行數(shù)B =5 89 125 611 5小提示:A(:)就是將矩陣A 每一列堆疊起來(lái),成為一個(gè)行向量,而這也是MATLAB 變數(shù)的內(nèi)部?jī)?chǔ)存方式。以前例而言,reshape(A,8, 1)和A(:)同樣都會(huì)產(chǎn)生一個(gè)8x1 的矩陣。MATLAB 可在同時(shí)執(zhí)行數(shù)個(gè)命令,只要以逗號(hào)或分號(hào)將命令隔開(kāi):x = sin(pi/3); y = x2; z = y*10,z =7.5000若一個(gè)數(shù)學(xué)運(yùn)算是太長(zhǎng),可用三個(gè)句點(diǎn)將其延伸到下一行:z = 10*sin(pi/3)* .sin(pi/3);若要檢視現(xiàn)存於工作空間(Workspace)的變數(shù),可鍵入who:whoYour variables are:testfile x這些是由使用者定義的變數(shù)。若要知道這些變數(shù)的詳細(xì)資料,可鍵入:whosName Size Bytes ClassA 2x4 64 double arrayB 4x2 64 double arrayans 1x1 8 double arrayx 1x1 8 double arrayy 1x1 8 double arrayz 1x1 8 double arrayGrand total is 20 elements using 160 bytes使用clear 可以刪除工作空間的變數(shù):clear AA? Undefined function or variable A.另外MATLAB 有些永久常數(shù)(Permanent constants),雖然在工作空間中看不到,但使用者可直接取用,例如:pians =3.1416=下表即為MATLAB 常用到的永久常數(shù)。小整理:MATLAB 的永久常數(shù)i 或j:基本虛數(shù)單位(即)eps:系統(tǒng)的浮點(diǎn)(Floating-point)精確度inf:無(wú)限大, 例如1/0nan 或NaN:非數(shù)值(Not a number),例如0/0pi:圓周率 p(= 3.1415926.)realmax:系統(tǒng)所能表示的最大數(shù)值realmin:系統(tǒng)所能表示的最小數(shù)值nargin: 函數(shù)的輸入引數(shù)個(gè)數(shù)nargin: 函數(shù)的輸出引數(shù)個(gè)數(shù)=Matlab 入門(mén)教程-流程控制1-2、重復(fù)命令最簡(jiǎn)單的重復(fù)命令是for n圈(for-loop),其基本形式為:for 變數(shù) = 矩陣;運(yùn)算式;end其中變數(shù)的值會(huì)被依次設(shè)定為矩陣的每一行,來(lái)執(zhí)行介於for 和end 之間的運(yùn)算式。因此,若無(wú)意外情況,運(yùn)算式執(zhí)行的次數(shù)會(huì)等於矩陣的行數(shù)。舉例來(lái)說(shuō),下列命令會(huì)產(chǎn)生一個(gè)長(zhǎng)度為6 的調(diào)和數(shù)列(Harmonicsequence):x = zeros(1,6); % x 是一個(gè)16 的零矩陣for i = 1:6,x(i) = 1/i;end在上例中,矩陣x 最初是一個(gè)16 的零矩陣,在for n圈中,變數(shù)i 的值依次是1 到6,因此矩陣x 的第i 個(gè)元素的值依次被設(shè)為1/i。我們可用分?jǐn)?shù)來(lái)顯示此數(shù)列:format rat % 使用分?jǐn)?shù)來(lái)表示數(shù)值disp(x)1 1/2 1/3 1/4 1/5 1/6for n圈可以是多層的,下例產(chǎn)生一個(gè)16 的Hilbert 矩陣h,其中為於第i列、第j 行的元素為:h = zeros(6);for i = 1:6,for j = 1:6,h(i,j) = 1/(i+j-1);endenddisp(h)1 1/2 1/3 1/4 1/5 1/61/2 1/3 1/4 1/5 1/6 1/71/3 1/4 1/5 1/6 1/7 1/81/4 1/5 1/6 1/7 1/8 1/91/5 1/6 1/7 1/8 1/9 1/101/6 1/7 1/8 1/9 1/10 1/11小提示:預(yù)先配置矩陣在上面的例子,我們使用zeros 來(lái)預(yù)先配置(Allocate)了一個(gè)適當(dāng)大小的矩陣。若不預(yù)先配置矩陣,程式仍可執(zhí)行,但此時(shí)MATLAB 需要?jiǎng)討B(tài)地增加(或減?。┚仃嚨拇笮。蚨档统淌降膱?zhí)行效率。所以在使用一個(gè)矩陣時(shí),若能在事前知道其大小,則最好先使用zeros 或ones 等命令來(lái)預(yù)先配置所需的記憶體(即矩陣)大小。在下例中,for n圈列出先前產(chǎn)生的Hilbert 矩陣的每一行的平方和:for i = h,disp(norm(i)2); % 印出每一行的平方和end1299/871282/551_650/2343524/2933559/4431831/8801在上例中,每一次i 的值就是矩陣h 的一行,所以寫(xiě)出來(lái)的命令特別簡(jiǎn)潔。令一個(gè)常用到的重復(fù)命令是while n圈,其基本形式為:while 條件式;運(yùn)算式;end也就是說(shuō),只要條件示成立,運(yùn)算式就會(huì)一再被執(zhí)行。例如先前產(chǎn)生調(diào)和數(shù)列的例子,我們可用while n圈改寫(xiě)如下:x = zeros(1,6); % x 是一個(gè)16 的零矩陣i = 1;while i 0.5,disp(Given random number is greater than 0.5.);endGiven random number is greater than 0.5.1-4、集合多個(gè)命令於一個(gè)M 檔案若要一次執(zhí)行大量的MATLAB 命令,可將這些命令存放於一個(gè)副檔名為m 的檔案,并在MATLAB 提示號(hào)下鍵入此檔案的主檔名即可。此種包含MATLAB 命令的檔案都以m 為副檔名,因此通稱(chēng)M 檔案(M-files)。例如一個(gè)名為test.m的M 檔案,包含一連串的MATLAB 命令,那麼只要直接鍵入test,即可執(zhí)行其所包含的命令:pwd % 顯示現(xiàn)在的目錄ans =D:MATLAB5bincd c:datamlbook % 進(jìn)入test.m 所在的目錄type test.m % 顯示test.m 的內(nèi)容% This is my first test M-file.% Roger Jang, March 3, 1997fprintf(Start of test.m!n);for i = 1:3,fprintf(i = %d - i3 = %dn, i, i3);endfprintf(End of test.m!n);test % 執(zhí)行test.mStart of test.m!i = 1 - i3 = 1i = 2 - i3 = 8i = 3 - i3 = 27End of test.m!小提示:第一注解行(H1 help line)test.m 的前兩行是注解,可以使程式易於了解與管理。特別要說(shuō)明的是,第一注解行通常用來(lái)簡(jiǎn)短說(shuō)明此M 檔案的功能,以便lookfor 能以關(guān)鍵字比對(duì)的方式來(lái)找出此M 檔案。舉例來(lái)說(shuō),test.m 的第一注解行包含test 這個(gè)字,因此如果鍵入lookfortest,MATLAB 即可列出所有在第一注解行包含test 的M 檔案,因而test.m也會(huì)被列名在內(nèi)。嚴(yán)格來(lái)說(shuō),M 檔案可再細(xì)分為命令集(Scripts)及函數(shù)(Functions)。前述的test.m 即為命令集,其效用和將命令逐一輸入完全一樣,因此若在命令集可以直接使用工作空間的變數(shù),而且在命令集中設(shè)定的變數(shù),也都在工作空間中看得到。函數(shù)則需要用到輸入引數(shù)(Inputarguments)和輸出引數(shù)(Outputarguments)來(lái)傳遞資訊,這就像是C 語(yǔ)言的函數(shù),或是FORTRAN 語(yǔ)言的副程序(Subroutines)。舉例來(lái)說(shuō),若要計(jì)算一個(gè)正整數(shù)的階乘(Factorial),我們可以寫(xiě)一個(gè)如下的MATLAB 函數(shù)并將之存檔於fact.m:function output = fact(n)% FACT Calculate factorial of a given positive integer.output = 1;for i = 1:n,output = output*i;end其中fact 是函數(shù)名,n 是輸入引數(shù),output 是輸出引數(shù),而i 則是此函數(shù)用到的暫時(shí)變數(shù)。要使用此函數(shù),直接鍵入函數(shù)名及適當(dāng)輸入引數(shù)值即可:y = fact(5)y =120(當(dāng)然,在執(zhí)行fact 之前,你必須先進(jìn)入fact.m 所在的目錄。)在執(zhí)行fact(5)時(shí),MATLAB 會(huì)跳入一個(gè)下層的暫時(shí)工作空間(Temperaryworkspace),將變數(shù)n 的值設(shè)定為5,然後進(jìn)行各項(xiàng)函數(shù)的內(nèi)部運(yùn)算,所有內(nèi)部運(yùn)算所產(chǎn)生的變數(shù)(包含輸入引數(shù)n、暫時(shí)變數(shù)i,以及輸出引數(shù)output)都存在此暫時(shí)工作空間中。運(yùn)算完畢後,MATLAB 會(huì)將最後輸出引數(shù)output 的值設(shè)定給上層的變數(shù)y,并將清除此暫時(shí)工作空間及其所含的所有變數(shù)。換句話(huà)說(shuō),在呼叫函數(shù)時(shí),你只能經(jīng)由輸入引數(shù)來(lái)控制函數(shù)的輸入,經(jīng)由輸出引數(shù)來(lái)得到函數(shù)的輸出,但所有的暫時(shí)變數(shù)都會(huì)隨著函數(shù)的結(jié)束而消失,你并無(wú)法得到它們的值。小提示:有關(guān)階乘函數(shù)前面(及後面)用到的階乘函數(shù)只是純粹用來(lái)說(shuō)明MATLAB 的函數(shù)觀念。若實(shí)際要計(jì)算一個(gè)正整數(shù)n 的階乘(即n!)時(shí),可直接寫(xiě)成prod(1:n),或是直接呼叫g(shù)amma 函數(shù):gamma(n-1)。MATLAB 的函數(shù)也可以是遞n式的(Recursive),也就是說(shuō),一個(gè)函數(shù)可以呼叫它本身。舉例來(lái)說(shuō),n! =n*(n-1)!,因此前面的階乘函數(shù)可以改成遞n式的寫(xiě)法:function output = fact(n)% FACT Calculate factorial of a given positive integerrecursively.if n = 1, % Terminating conditionoutput = 1;return;endoutput = n*fact(n-1);在寫(xiě)一個(gè)遞n函數(shù)時(shí),一定要包含結(jié)束條件(Terminatingcondition),否則此函數(shù)將會(huì)一再呼叫自己,永遠(yuǎn)不會(huì)停止,直到電腦的記憶體被耗盡為止。以上例而言,n=1 即滿(mǎn)足結(jié)束條件,此時(shí)我們直接將output 設(shè)為1,而不再呼叫此函數(shù)本身。發(fā)信人: alphazhao (子羽 & 三笑), 信區(qū): Modelling標(biāo) 題: Matlab 入門(mén) (3)發(fā)信站: 武漢白云黃鶴站 (Fri Dec 10 14:41:49 1999), 站內(nèi)信件發(fā)信人: Mars (混沌分形周期三), 信區(qū): MATH標(biāo) 題: Matlab 入門(mén)教程-流程控制發(fā)信站: 一網(wǎng)深情 (Sun Nov 29 17:35:36 1998), 轉(zhuǎn)信1-2、重復(fù)命令最簡(jiǎn)單的重復(fù)命令是for n圈(for-loop),其基本形式為:for 變數(shù) = 矩陣;運(yùn)算式;end其中變數(shù)的值會(huì)被依次設(shè)定為矩陣的每一行,來(lái)執(zhí)行介於for 和end 之間的運(yùn)算式。因此,若無(wú)意外情況,運(yùn)算式執(zhí)行的次數(shù)會(huì)等於矩陣的行數(shù)。舉例來(lái)說(shuō),下列命令會(huì)產(chǎn)生一個(gè)長(zhǎng)度為6 的調(diào)和數(shù)列(Harmonicsequence):x = zeros(1,6); % x 是一個(gè)16 的零矩陣for i = 1:6,x(i) = 1/i;end在上例中,矩陣x 最初是一個(gè)16 的零矩陣,在for n圈中,變數(shù)i 的值依次是_1 到6,因此矩陣x 的第i 個(gè)元素的值依次被設(shè)為1/i。我們可用分?jǐn)?shù)來(lái)顯示此數(shù)列:format rat % 使用分?jǐn)?shù)來(lái)表示數(shù)值disp(x)1 1/2 1/3 1/4 1/5 1/6for n圈可以是多層的,下例產(chǎn)生一個(gè)16 的Hilbert 矩陣h,其中為於第i列、第j 行的元素為:h = zeros(6);for i = 1:6,for j = 1:6,h(i,j) = 1/(i+j-1);endenddisp(h)1 1/2 1/3 1/4 1/5 1/61/2 1/3 1/4 1/5 1/6 1/71/3 1/4 1/5 1/6 1/7 1/81/4 1/5 1/6 1/7 1/8 1/91/5 1/6 1/7 1/8 1/9 1/101/6 1/7 1/8 1/9 1/10 1/11小提示:預(yù)先配置矩陣在上面的例子,我們使用zeros 來(lái)預(yù)先配置(Allocate)了一個(gè)適當(dāng)大小的矩陣。若不預(yù)先配置矩陣,程式仍可執(zhí)行,但此時(shí)MATLAB 需要?jiǎng)討B(tài)地增加(或減小)矩陣的大小,因而降低程式的執(zhí)行效率。所以在使用一個(gè)矩陣時(shí),若能在事前知道其大小,則最好先使用zeros 或ones 等命令來(lái)預(yù)先配置所需的記憶體(即矩陣)大小。在下例中,for n圈列出先前產(chǎn)生的Hilbert 矩陣的每一行的平方和:for i = h,disp(norm(i)2); % 印出每一行的平方和end1299/871282/551650/2343524/2933559/4431831/8801在上例中,每一次i 的值就是矩陣h 的一行,所以寫(xiě)出來(lái)的命令特別簡(jiǎn)潔。令一個(gè)常用到的重復(fù)命令是while n圈,其基本形式為:while 條件式;運(yùn)算式;end也就是說(shuō),只要條件示成立,運(yùn)算式就會(huì)一再被執(zhí)行。例如先前產(chǎn)生調(diào)和數(shù)列的例子,我們可用while n圈改寫(xiě)如下:x = zeros(1,6); % x 是一個(gè)16 的零矩陣i = 1;while i 0.5,disp(Given random number is greater than 0.5.);endGiven random number is greater than 0.5.1-4、集合多個(gè)命令於一個(gè)M 檔案若要一次執(zhí)行大量的MATLAB 命令,可將這些命令存放於一個(gè)副檔名為m 的檔案,并在MATLAB 提示號(hào)下鍵入此檔案的主檔名即可。此種包含MATLAB 命令的檔案都以m 為副檔名,因此通稱(chēng)M 檔案(M-files)。例如一個(gè)名為test.m的M 檔案,包含一連串的MATLAB 命令,那麼只要直接鍵入test,即可執(zhí)行其所包含的命令:pwd % 顯示現(xiàn)在的目錄ans =D:MATLAB5bincd c:datamlbook % 進(jìn)入test.m 所在的目錄type test.m % 顯示test.m 的內(nèi)容% This is my first test M-file.% Roger Jang, March 3, 1997fprintf(Start of test.m!n);for i = 1:3,fprintf(i = %d - i3 = %dn, i, i3);endfprintf(End of test.m!n);test % 執(zhí)行test.mStart of test.m!i = 1 - i3 = 1i = 2 - i3 = 8i = 3 - i3 = 27End of test.m!小提示:第一注解行(H1 help line)test.m 的前兩行是注解,可以使程式易於了解與管理。特別要說(shuō)明的是,第一注解行通常用來(lái)簡(jiǎn)短說(shuō)明此M 檔案的功能,以便lookfor 能以關(guān)鍵字比對(duì)的方式來(lái)找出此M 檔案。舉例來(lái)說(shuō),test.m 的第一注解行包含test 這個(gè)字,因此如果鍵入lookfortest,MATLAB 即可列出所有在第一注解行包含test 的M 檔案,因而test.m也會(huì)被列名在內(nèi)。嚴(yán)格來(lái)說(shuō),M 檔案可再細(xì)分為命令集(Scripts)及函數(shù)(Functions)。前述的test.m 即為命令集,其效用和將命令逐一輸入完全一樣,因此若在命令集可以直接使用工作空間的變數(shù),而且在命令集中設(shè)定的變數(shù),也都在工作空間中看得到。函數(shù)則需要用到輸入引數(shù)(Inputarguments)和輸出引數(shù)(Outputarguments)來(lái)傳遞資訊,這就像是C 語(yǔ)言的函數(shù),或是FORTRAN 語(yǔ)言的副程序(Subroutines)。舉例來(lái)說(shuō),若要計(jì)算一個(gè)正整數(shù)的階乘(Factorial),我們可以寫(xiě)一個(gè)如下的MATLAB 函數(shù)并將之存檔於fact.m:function output = fact(n)% FACT Calculate factorial of a given positive integer.output = 1;for i = 1:n,output = output*i;end其中fact 是函數(shù)名,n 是輸入引數(shù),output 是輸出引數(shù),而i 則是此函數(shù)用到的暫時(shí)變數(shù)。要使用此函數(shù),直接鍵入函數(shù)名及適當(dāng)輸入引數(shù)值即可:y = fact(5)y =120(當(dāng)然,在執(zhí)行fact 之前,你必須先進(jìn)入fact.m 所在的目錄。)在執(zhí)行fact(5)時(shí),MATLAB 會(huì)跳入一個(gè)下層的暫時(shí)工作空間(Temperaryworkspace),將變數(shù)n 的值設(shè)定為5,然後進(jìn)行各項(xiàng)函數(shù)的內(nèi)部運(yùn)算,所有內(nèi)部運(yùn)算所產(chǎn)生的變數(shù)(包含輸入引數(shù)n、暫時(shí)變數(shù)i,以及輸出引數(shù)output)都存在此暫時(shí)工作空間中。運(yùn)算完畢後,MATLAB 會(huì)將最後輸出引數(shù)output 的值設(shè)定給上層的變數(shù)y,并將清除此暫時(shí)工作空間及其所含的所有變數(shù)。換句話(huà)說(shuō),在呼叫函數(shù)時(shí),你只能經(jīng)由輸入引數(shù)來(lái)控制函數(shù)的輸入,經(jīng)由輸出引數(shù)來(lái)得到函數(shù)的輸出,但所有的暫時(shí)變數(shù)都會(huì)隨著函數(shù)的結(jié)束而消失,你并無(wú)法得到它們的值。小提示:有關(guān)階乘函數(shù)前面(及後面)用到的階乘函數(shù)只是純粹用來(lái)說(shuō)明MATLAB 的函數(shù)觀念。若實(shí)際要計(jì)算一個(gè)正整數(shù)n 的階乘(即n!)時(shí),可直接寫(xiě)成prod(1:n),或是直接呼叫g(shù)amma 函數(shù):gamma(n-1)。MATLAB 的函數(shù)也可以是遞n式的(Recursive),也就是說(shuō),一個(gè)函數(shù)可以呼叫它本身。舉例來(lái)說(shuō),n! =n*(n-1)!,因此前面的階乘函數(shù)可以改成遞n式的寫(xiě)法:function output = fact(n)% FACT Calculate factorial of a given positive integerrecursively._if n = 1, % Terminating conditionoutput = 1;return;endoutput = n*fact(n-1);在寫(xiě)一個(gè)遞n函數(shù)時(shí),一定要包含結(jié)束條件(Terminatingcondition),否則此函數(shù)將會(huì)一再呼叫自己,永遠(yuǎn)不會(huì)停止,直到電腦的記憶體被耗盡為止。以上例而言,n=1 即滿(mǎn)足結(jié)束條件,此時(shí)我們直接將output 設(shè)為1,而不再呼叫此函數(shù)本身。Matlab 入門(mén)教程-環(huán)境設(shè)置1-5、搜尋路徑在前一節(jié)中,test.m 所在的目錄是d:mlbook。如果不先進(jìn)入這個(gè)目錄,MATLAB 就找不到你要執(zhí)行的M 檔案。如果希望MATLAB 不論在何處都能執(zhí)行test.m,那麼就必須將d:mlbook 加入MATLAB 的搜尋路徑(Searchpath)上。要檢視MATLAB 的搜尋路徑,鍵入path 即可:pathMATLABPATHd:matlab5toolboxmatlabgenerald:matlab5toolboxmatlabopsd:matlab5toolboxmatlablangd:matlab5toolboxmatlabelmatd:matlab5toolboxmatlabelfund:matlab5toolboxmatlabspecfund:matlab5toolboxmatlabmatfund:matlab5toolboxmatlabdatafund:matlab5toolboxmatlabpolyfund:matlab5toolboxmatlabfunfund:matlab5toolboxmatlabsparfund:matlab5toolboxmatlabgraph2dd:matlab5toolboxmatlabgraph3dd:matlab5toolboxmatlabspecgraphd:matlab5toolboxmatlabgraphicsd:matlab5toolboxmatlabuitoolsd:matlab5toolboxmatlabstrfund:matlab5toolboxmatlabiofund:matlab5toolboxmatlabtimefund:matlab5toolboxmatlabdatatypesd:matlab5toolboxmatlabdded:matlab5toolboxmatlabdemosd:matlab5toolboxtourd:matlab5toolboxsimulinksimulinkd:matlab5toolboxsimulinkblocksd:matlab5toolboxsimulinksimdemosd:matlab5toolboxsimulinkdeed:matlab5toolboxlocal此搜尋路徑會(huì)依已安裝的工具箱(Toolboxes)不同而有所不同。要查詢(xún)某一命令是在搜尋路徑的何處,可用which 命令:which expod:matlab5toolboxmatlabdemosexpo.m很顯然c:datamlbook 并不在MATLAB 的搜尋路徑中,因此MATLAB 找不到test.m 這個(gè)M 檔案:which testc:datamlbooktest.m要將d:mlbook 加入MATLAB 的搜尋路徑,還是使用path 命令:path(path, c:datamlbook);此時(shí)d:mlbook 已加入MATLAB 搜尋路徑(鍵入path 試看看),因此MATLAB 已經(jīng)看得到test.m:which testc:datamlbooktest.m現(xiàn)在我們就可以直接鍵入test,而不必先進(jìn)入test.m 所在的目錄。小提示:如何在其啟動(dòng)MATLAB 時(shí),自動(dòng)設(shè)定所需的搜尋路徑?如果在每一次啟動(dòng)MATLAB 後,都要設(shè)定所需的搜尋路徑,將是一件很麻煩的事。有兩種方法,可以使MATLAB 啟動(dòng)後,即可載入使用者定義的搜尋路徑:1.MATLAB 的預(yù)設(shè)搜尋路徑是定義在matlabrc.m(在c:matlab 之下,或是其他安裝MATLAB 的主目錄下),MATLAB 每次啟動(dòng)後,即自動(dòng)執(zhí)行此檔案。因此你可以直接修改matlabrc.m,以加入新的目錄於搜尋路徑之中。1.MATLAB 在執(zhí)行matlabrc.m 時(shí),同時(shí)也會(huì)在預(yù)設(shè)搜尋路徑中尋找startup.m,若此檔案存在,則執(zhí)行其所含的命令。因此我們可將所有在MATLAB 啟動(dòng)時(shí)必須執(zhí)行的命令(包含更改搜尋路徑的命令),放在此檔案中。每次MATLAB 遇到一個(gè)命令(例如test)時(shí),其處置程序?yàn)椋?.將test 視為使用者定義的變數(shù)。2.若test 不是使用者定義的變數(shù),將其視為永久常數(shù)。3.若test 不是永久常數(shù),檢查其是否為目前工作目錄下的M 檔案。4.若不是,則由搜尋路徑尋找是否有test.m 的檔案。5.若在搜尋路徑中找不到,則MATLAB 會(huì)發(fā)出嗶嗶聲并印出錯(cuò)誤訊息。以下介紹與MATLAB 搜尋路徑相關(guān)的各項(xiàng)命令。1-6、資料的儲(chǔ)存與載入有些計(jì)算曠日廢時(shí),那麼我們通常希望能將計(jì)算所得的儲(chǔ)存在檔案中,以便將來(lái)可進(jìn)行其他處理。MATLAB 儲(chǔ)存變數(shù)的基本命令是save,在不加任何選項(xiàng)(Options)時(shí),save 會(huì)將變數(shù)以二進(jìn)制(Binary)的方式儲(chǔ)存至副檔名為mat 的檔案,如下述:save:將工作空間的所有變數(shù)儲(chǔ)存到名為matlab.mat 的二進(jìn)制檔案。save filename:將工作空間的所有變數(shù)儲(chǔ)存到名為filename.mat 的二進(jìn)制檔案。save filename x y z:將變數(shù)x、y、z 儲(chǔ)存到名為filename.mat 的二進(jìn)制檔案。以下為使用save 命令的一個(gè)簡(jiǎn)例:who % 列出工作空間的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店中餐擺臺(tái)培訓(xùn)
- 重卡銷(xiāo)售培訓(xùn)
- 痛風(fēng)病人飲食護(hù)理
- 職業(yè)安全健康管理
- 財(cái)會(huì)合規(guī)培訓(xùn)
- 腫瘤護(hù)理專(zhuān)家共識(shí)
- 銷(xiāo)售業(yè)績(jī)分解培訓(xùn)
- 加油站全流程診斷體系構(gòu)建
- 稽核監(jiān)察財(cái)務(wù)培訓(xùn)
- 互聯(lián)網(wǎng)+教育精準(zhǔn)扶貧:2025年實(shí)踐案例分析報(bào)告
- 優(yōu)秀物業(yè)管理項(xiàng)目評(píng)選方案
- 貴州大方富民村鎮(zhèn)銀行股份有限公司(籌)招聘上岸提分題庫(kù)3套【500題帶答案含詳解】
- GB/T 5470-2008塑料沖擊法脆化溫度的測(cè)定
- GB/T 40998-2021變性淀粉中羥丙基含量的測(cè)定分光光度法
- 圖書(shū)管理系統(tǒng)畢業(yè)論文參考文獻(xiàn)精選,參考文獻(xiàn)
- 中國(guó)當(dāng)代舊體詩(shī)選讀幻燈片
- 吉林省全省市縣鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心基本公共衛(wèi)生服務(wù)醫(yī)療機(jī)構(gòu)信息名單目錄995家
- 倔強(qiáng)的小紅軍-精講版課件
- 信息隱藏與數(shù)字水印課件(全)全書(shū)教學(xué)教程完整版電子教案最全幻燈片
- 公開(kāi)招聘社區(qū)居委專(zhuān)職工作人員考試筆試、面試題集及相關(guān)知識(shí)(11套試題含答案)
- 中職數(shù)學(xué)基礎(chǔ)模塊下冊(cè)《等差數(shù)列》ppt說(shuō)課稿
評(píng)論
0/150
提交評(píng)論