實驗一 MATLAB語言基礎_第1頁
實驗一 MATLAB語言基礎_第2頁
實驗一 MATLAB語言基礎_第3頁
實驗一 MATLAB語言基礎_第4頁
實驗一 MATLAB語言基礎_第5頁
已閱讀5頁,還剩58頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

實驗一目的:掌握MATLAB的基本使用方法;學會初步觀察、分析MATLAB數值計算的誤差及傳播;掌握MATLAB的程序設計中各種語法的使用方法;通過學習初步能設計簡單的MATLAB程序。重點:MATLAB的基本使用方法;

MATLAB的程序設計中各種語法的使用。難點:觀察、分析MATLAB數值計算的誤差;

MATLAB的程序設計中各種語法的使用,設計簡單的

MATLAB程序一.MATLAB簡介

MATLAB名字是由MATrix和LABoratory兩個詞的前三個字母組合而成的。它是MathWorks公司于1982年推出的一套高性能的數值計算和可視化數學軟件。被譽為“巨人肩上的工具”。由于使用Matlab編程運算與人進行科學計算的思路和表達方式完全一致,所以不象學習其它高級語言--如Basic、Fortran和C等那樣難于掌握,用Matlab編寫程序猶如在演算紙上排列出公式與求解問題,所以又被稱為演算紙式科學算法語言。在這個環境下,對所要求解的問題,用戶只需簡單地列出數學表達式,其結果便以數值或圖形方式顯示出來。

MATLAB的含義是矩陣實驗室(MATRIX

LABORATORY),主要用于方便矩陣的存取,其基本元素是無須定義維數的矩陣。MATLAB自問世以來,就以數值計算著稱。MATLAB進行數值計算的基本單位是復數數組(或稱陣列),這使的MATLAB高度“向量化”。經過二十幾年的完善和擴充,現已發展成為線性代數課程的標準工具。由于它不需定義數組的維數,并給出矩陣函數、特殊矩陣專門的庫函數,使之在求解諸如信號處理、建模、系統識別、控制、優化等領域的問題時,顯得大為簡捷、高效、方便,這是其它高級語言所不能比擬的。美國許多大學的實驗室都安裝有MATLAB供學習和研究之用。在那里,MATLAB是攻讀學位的大學生、碩士生、博士生必須掌握的基本工具。MATLAB中包括了被稱作工具箱(TOOLBOX)的各類應用問題的求解工具。工具箱實際上是對MATLAB進行擴展應用的一系列MATLAB函數(稱為M文件),它可用來求解各類學科的問題,包括信號處理、圖象處理、控制、系統辨識、神經網絡等。隨著MATLAB版本的不斷升級,其所含的工具箱的功能也越來越豐富,因此,應用范圍也越來越廣泛,成為涉及數值分析的各類工程師不可不用的工具。二.MATLAB工作環境

運行MATLAB的可執行文件,自動創建MATLAB指令窗(CommandWindow)。

如果你是個初學者,可以在指令窗鍵入demo,這可是學習的好幫手。?demol

一旦發現指令不知如何使用時,help命令將告訴你使用。例:?helpsinSINSine.SIN(X)isthesineoftheelementsofX.Overloadedmethodshelpsym/sin.m

在MATLAB下進行基本數學運算,只需將運算式直接打入提示號(>>)之後,并按入Enter鍵即可。例如:>>(10*19+2/4-34)/2*3ans=234.7500MATLAB會將運算結果直接存入一變量ans,代表MATLAB運算後的答案,并顯示其數值屏幕上。如果在上述的例子結尾加上”;”,則計算結果不會顯示在指令視窗上,要得知計算值只須鍵入該變數值即可。

MATLAB可以將計算結果以不同的精確度的數字格式顯示,我們可以在指令視窗上的功能選單上的Options(選項)

下選NumericalFormat(數字格式),或者直接在指令視窗鍵入以下的各個數字顯示格式的指令。

?formatshort(這是默認的)MATLAB利用了↑↓二個游標鍵可以將所下過的指令叫回來重覆使用。按下↑則前一次指令重新出現,之后再按Enter鍵,即再執行前一次的指令。而↓鍵的功用則是往后執行指令。其它在鍵盤上的幾個鍵如→←,Delete,Insert,其功能則顯而易見,試用即知無須多加說明。三.變量及其命名規則

變量1.

MATLAB對變量名的大小寫是敏感的。2.

變量的第一個字符必須為英文字母,而且不能超過31個字符。

3.

變量名可以包含下劃線、數字,但不能為空格符、標點。預定義的變量

ans預設的計算結果的變量名epsMATLAB定義的正的極小值=2.2204e-16pi內建的π值inf∞值,無限大

(1/0)NaN非數,無法定義一個數目

(0/0)i或

j虛數單位i=j=(-1)^(1/2)而鍵入clear則是清除所有定義過的變量名稱。四.MATLAB賦值

l

表達式MATLAB書寫表達式的規則與“手寫算式”差不多相同。如果一個指令過長可以在結尾加上...(代表此行指

令與下一行連續),例如>>?3*...6ans=18比如將23賦值給變量a:>>a=23五.MATLAB常用數學函數

l

.三角函數和雙曲函數名稱含義名稱含義名稱含義sin正弦csc

余割atanh

反雙曲正切cos

余弦asec

反正割acoth

反雙曲余切tan正切acsc

反余割sech

雙曲正割cot余切sinh

雙曲正弦csch

雙曲余割asin

反正弦cosh

雙曲余弦asech

反雙曲正割acos

反余弦tanh

雙曲正切acsch

反雙曲余割atan

反正切coth

雙曲余切

acot

反余切asinh

反雙曲正弦

sec正割acosh

反雙曲余弦

2.指數函數名稱含義名稱含義名稱含義expE為底的指數log1010為底的對數pow22的冪log自然對數log22為底的對數sqrt

平方根3.復數函數名稱含義名稱含義名稱含義abs絕對值conj復數共軛real復數實部angle相角imag

復數虛部

4.取整函數和求余函數名稱含義名稱含義ceil向+∞取整rem

求余數fix向0取整round向靠近整數取整floor向-∞取整sign符號函數mod模除求余

5.矩陣變換函數名稱含義名稱含義fiplr

矩陣左右翻轉

diag

產生或提取對角陣fipud

矩陣上下翻轉

tril

產生下三角fipdim

矩陣特定維翻轉

triu

產生上三角Rot90矩陣反時針90翻轉

6.其他函數名稱含義名稱含義min

最小值max

最大值mean

平均值median

中位數std

標準差diff

相鄰元素的差sort

排序length

個數norm

歐氏(Euclidean)長度sum

總和prod

總乘積dot

內積cumsum

累計元素總和cumprod

累計元素總乘積cross

外積

六.MATLAB系統命令

命令含義help在線幫助helpwin

在線幫助窗口helpdesk在線幫助工作臺demo運行演示程序ver

版本信息readme顯示Readme文件who顯示當前變量whos

顯示當前變量的詳細信息clear清空工作間的變量和函數pack整理工作間的內存load把文件調入變量到工作間save把變量存入文件中quit/exit退出MATLABwhat顯示指定的matlab文件lookfor

在HELP里搜索關鍵字which定位函數或文件path獲取或設置搜索路徑echo命令回顯cd

改變當前的工作目錄pwd

顯示當前的工作目錄dir顯示目錄內容unix

執行unix命令dos執行dos命令!執行操作系統命令computer顯示計算機類型七.MATLAB語言中的關系與邏輯運算

在執行關系及邏輯運算時,MATLAB將輸入的不為零的數值都視為真(True)而為零的數值則視為假(False)。運算的輸出值將判斷為真者以1表示而判斷為假者以0表示。各個運算符須用在二個大小相同的陣列或是矩陣中的比較。關系運算指令含義<

小于

<=

小于等于

>

大于

>=

大于等于

==

等于

~=

不等于

?a=1:2:11;

?b=2:1:7;?a>bans=001111?a==bans=010000?a>=bans=011111

?a-(b>4)ans=1356810

邏輯運算

指令

含義

&

邏輯

and(且)|

邏輯

or(或)~

邏輯

not(非)(a<2)|(b>6)ans=100001c=a+(a>3)|(b<6)c=111111

邏輯關系函數

指令含義

xor

不相同就取1,否則取0any只要有非0就取1,否則取0all全為1取1,否則為0isnan

為數NaN取1,否則為0isinf

為數inf取1,否則為0isfinite

有限大小元素取1,否則為0ischar

是字符串取1,否則為0isequal

相等取1,否則取0ismember

兩個矩陣是屬于關系取1,否則取0isempty

矩陣為空取1,否則取0isletter

是字母取1,否則取0(可以是字符串)isstudent

學生版取1isprime

質數取1,否則取0isreal

實數取1,否則取0isspace

空格位置取1,否則取0isequal(a,b)ans=0

isreal(a)ans=1isstudent

ans=

0

八.矩陣及運算

1.

數組

MATLAB的運算事實上是以數組(array)及矩陣(matrix)方式在做運算。建立一個數組時,如果是要個別鍵入元素,須用中括號[]將元素置于其中。數組為一維元素所構成,而矩陣為多維元素所組成,例如?x=[12345678];

%一維

1x8陣列

?x=[12345678;4567891011];

%二維

2x8矩陣,以;區隔各列的元素

?x=[12345678

%二維2x8矩陣,各列的元素分二行鍵入4567891011];?x(3)

%

x的第三個元素ans=2

?x([125])%x的第一、二、五個元素ans=143x(1:5)%x的第前五個元素ans=14253?x(10:end)%x的第十個元素后的元素ans=869710811?x(10:-1:2)%x的第十個元素和第二個元素的倒排ans=857463524

?x(find(x>5))%x中大于5的元素ans=6

7

8

6

9

7

10

8

11?x(4)=100%給x的第四個元素重新給值x=12345678410067891011?x(3)=[]%刪除第三個元素x=Columns1through1214100364758697Columns13through1510811?x(16)=1%加入第十六個元素x=Columns1through1214100364758697Columns13through161081112

建立數組上面的方法只適用于元素不多的情況,但是當元素很多的時候,則須采用以下的方式:?x=(0:0.02:1);

%以起始值=0、增量值=0.02、終止值=1的矩陣

?x=linspace(0,1,100);

%利用linspace,以區隔起始值=0終止值=1之間的元素數目=100?a=[]%空矩陣

a=[]?zeros(2,2)%全為0的2階矩陣

ans=00

0

0

?ones(3,3)%全為1的3階矩陣

ans=111111111?rand(2,4);隨機矩陣

?a=1:7,b=1:0.2:5;%更直接的方式

?c=[ba];

%可利用先前建立的陣列

a及陣列

b,組成新陣列

?a=1:1:10;?b=0.1:0.1:1;

?a+b*I%復數陣列

ans=Columns1through41.0000+0.1000i2.0000+0.2000i3.0000+0.3000i4.0000+0.4000iColumns5through85.0000+0.5000i6.0000+0.6000i7.0000+0.7000i8.0000+0.8000iColumns9through109.0000+0.9000i10.0000+1.0000i

九.矩陣的運算

經典的算術運算符。經

符MATLAB表達式加+a+b減-a-b乘*a*b除/或

\a/b或a\b冪^a^b?a=1:1:10;?b=0:10:90;?a+b

ans=11223344556677889100

?a-bans=1-8-17-26-35-44-53-62-71-80?a.*b%注意這里a后加了個“.”ans=02060120200300420560720900?a/bans=0.

1158?a\bans=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000123456789

?b./aans=Columns1through705.00006.66677.50008.00008.33338.5714Columns8through108.75008.88899.0000?a.\bans=Columns1through705.00006.66677.50008.00008.33338.5714Columns8through108.75008.88899.0000?a.^2ans=149162536496481100

說明:在這里特別要注意一下有沒有加點“.”之間的區別,這些算術運算符所運算的兩個陣列是否需要長度一致。

矩陣轉置運算通過在矩陣變量后加“’”的方法來表示轉置運算

?a=1:1:10;

?b=0:10:90;?a'ans=12345678910

>>c=a+b*i;>>c'ans=1.00002.0000-10.0000i3.0000-20.0000i4.0000-30.0000i

5.0000-40.0000i6.0000-50.0000i7.0000-60.0000i8.0000-70.0000i9.0000-80.0000i10.0000-90.0000i

十.M文件

M文件用MATLAB語言編寫的程序,稱為M文件。

M文件有兩類:命令文件和函數文件。命令文件:沒有輸入參數,也不返回輸出參數。函數文件:可以輸入參數,也可返回輸出參數。1.M文件的建立與編輯建立新的M文件:

從MATLAB命令窗口的File菜單中選擇New菜單項,再選擇M-file命令。

M文件編輯已有的M文件:從MATLAB命令窗口的Flie菜單中選擇OpenM-file命令。2.命令文件將需要運行的命令編輯到一個命令文件中,然后在MATLAB命令窗口輸入該命令文件的名字,就會順序執行命令文件中的命令?!纠?】

建立一個命令文件將變量a,b的值互換。M文件

e31.m文件:a=1:9;b=[11,12,13;14,15,16;17,18,19];c=a;a=b;b=c;ab

在MATLAB的命令窗口中輸入e31,將會執行該命令文件。十一.數據的輸入輸出1.input函數:用于向計算機輸入一個參數。調用格式:A=input(提示信息,選項);注:‘s’選項,則允許用戶輸入一個字符串。例如想輸入一個人的姓名,可采用命令

xm=input('What''syourname:','s')【例2】

求一元二次方程ax2+bx+c=0的根。數據的輸入輸出

a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]將該程序以aa.m文件存盤,然后運行aa.m文件。2.pause函數:暫停程序的執行。調用格式:pause(延遲秒數)注:如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續執行。數據的輸入輸出

3.disp函數:命令窗口輸出函數。調用格式:disp(輸出項)注:輸出項為字符串或矩陣。例如

A='Hello,MATLAB';

disp(A)輸出為:Hello,MATLAB十二.程序設計(一)選擇結構選擇結構的語句有if語句和switch語句。1.if語句

格式一:if條件語句組

end程序設計格式二:if條件語句組1else

語句組2end(一)選擇結構格式三:if條件1

語句組1elseif條件2

語句組2……elseif條件m

語句組melse

語句組m+1end程序設計【例4】輸入三角形的三條邊,求面積。

A=input('請輸入三角形的三條邊:');ifA(1)+A(2)>A(3)&A(1)+A(3)>A(2)&A(2)+A(3)>A(1)p=(A(1)+A(2)+A(3))/2;s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));

disp(s);else

disp('不能構成一個三角形。')end運行:請輸入三角形的三條邊:[456]9.9216程序設計(一)選擇結構【例5】輸入一個字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導字符,若為其他字符則原樣輸出。c=input('','s');ifc>='A'&c<'Z'disp(setstr(abs(c)+1));elseifc>'a'&c<='z'disp(setstr(abs(c)-1));else

disp(c);end程序設計(一)選擇結構2switch語句switch語句根據變量或表達式的取值不同,分別執行不同的語句。其格式為:

switch表達式

case值1

語句組1case值2語句組2……case值m

語句組motherwise

語句組m+1end程序設計(一)選擇結構【例6】根據變量num的值來決定顯示的內容。

num=input('請輸入一個數');switchnumcase-1

disp('Iamateacher.');case0

disp('Iamastudent.');case1

disp('Youareateacher.');otherwise

disp('Youareastudent.');end程序設計(一)選擇結構(二)循環結構實現循環結構的語句:for語句和while語句。1.for語句:格式:for循環變量=表達式1:表達式2:表達式3

循環體語句

end注:其中表達式1的值為循環變量的初值,表達式2的值為步長,表達式3的值為循環變量的終值。步長為1時,表達式2可以省略。程序設計2.while語句格式為:

while(條件)

循環體語句

end程序設計(二)循環結構3.循環的嵌套如果一個循環結構的循環體又包括一個循環結構,就稱為循環的嵌套,或稱為多重循環結構。多重循環的嵌套層數可以是任意的。可以按照嵌套層數,分別叫做二重循環、三重循環等。處于內部的循環叫作內循環,處于外部的循環叫作外循環。程序設計(二)循環結構【例7】

求[100,1000]以內的全部素數。

n=0;form=100:1000flag=1;j=m-1;i=2;whilei<=j&flagifrem(m,i)==0flag=0;end

i=i+1;endifflagn=n+1;prime(n)=m;endendprime%變量prime存放素數程序設計(二)循環結構prime=101103107109113127131137139149151157163167173179181191193197199211223227229233239241251257263269271277281283293307311313317331337347349353359367373379383389397401409419421431433439443449457461463467479487491499503509521523541547557563569571577587593599601607613617619631641643647653659661673677683691701709719727733739743751757761769773787797809811821823827829839853857859863877881883887907911919929937941947953967971977983991997共143個素數。十三.函數文件函數文件是另一種形式的M文件,每一個函數文件都定義一個函數。事實上,MATLAB提供的標準函數大部分都是由函數文件定義的。函數文件1.函數文件格式函數文件由function語句引導,其格式為:

function輸出形參表=函數名(輸入形參表)

注釋說明部分函數體注:其中函數名的命名規則與變量名相同。輸入形參為函數的輸入參數,輸出形參為函數的輸出參數。當輸出形參多于1個時,則應該用方括號括起來?!纠?】

編寫函數文件求小于任意自然數n的Fibonacci數列各項。

functionf=ffib(n)%用于求Fibonacci數列的函數文件

%f=ffib(n)%1999年9月30日編

f=[1,1];i=1;whilef(i)+f(i+1)<nf(i+2)=f(i)+f(i+1);i=i+1;end將以上函數文件以文件名ffib.m存盤,然后在MATLAB命令窗口輸入以下命令,可求小于2000的Fibonacci數。

ffib(2000)函數文件2.函數調用函數文件編制好后,就可調用函數進行計算了。如上面定義ffib函數后,調用它求小于2000的Fibonacci數。函數調用的一般格式是:

[輸出實參表]=函數名(輸入實參表)函數文件【例9】

利用函數文件,實現直角坐標(x,y)與極坐標(γ,θ)之間的轉換。函數文件tran.m:

function[gama,theta]=tran(x,y)

gama=sqrt(x*x+y*y);theta=atan(y/x);

調用tran.m的命令文件main1.m:

x=input('Pleaseinputx=:');y=input('Pleaseinputy=:');[gam,the]=tran(x,y);gamthe已知轉換公式為:極坐標的矢徑:γ=sqrt(x^2+y^2)

極坐標的幅角:θ=atan(y/x)函數文件【例10】

利用函數的遞歸調用,求n!。

functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;

溫馨提示

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

評論

0/150

提交評論