




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Matlab程序設計第8講Matlab程序設計第8講1Matlab命令的執(zhí)行方式Application
of
Matlab
Language2013/9/102
交互式命令執(zhí)行方式(命令窗口)逐條輸入,逐條執(zhí)行,操作簡單、直觀,但速度慢,執(zhí)行過程不能保留。
M文件的程序執(zhí)行方式將命令編成程序存儲在一個文件中(M文件),依次運行文件中的命令,可以重復進行。
Matlab程序設計有傳統(tǒng)高級語言的特征,又有自己獨特的特點,可以利用數據結構的特點,使程序結構簡單,編程效率高。Matlab命令的執(zhí)行方式ApplicationofMa5.1 M文件的分類Application
of
Matlab
Language2013/9/103
用Matlab語言編寫的程序,稱為M文件。是由若干Matlab命令組合在一起構成的,它可以完成某些操作,也可以實現某種算法。
M文件根據調用方式的不同分為兩類:命令文件(Script
File)函數文件(Function
File)
它們的擴展名都是.m5.1 M文件的分類ApplicationofMatla命令文件和函數文件的區(qū)別Application
of
Matlab
Language2013/9/104
命令文件沒有輸入參數,也不返回輸出參數;函數文件可以帶輸入參數,也可以返回輸出參數。
命令文件對工作空間中的變量進行操作,文件中所有命令的執(zhí)行結果也返回工作空間中;函數文件中定義的變量為局部變量,當函數文件執(zhí)行完畢時,這些變量也被清除。
命令文件可以直接運行;函數文件不能直接運行,要以函數調用的方式來調用它。命令文件和函數文件的區(qū)別ApplicationofMat例5.1
建立文件將變量a、b的值互換。Application
of
Matlab
Language2013/9/105命令文件:clear;a
=
1:10;b=[11,12,13,14;15,16,17,18];c
=
a;
a
=
b;
b
=c;ab將文件保存為exch,并在命令窗口執(zhí)行。執(zhí)行結果:a
=b
=1 2 3 4 5 6 7 8 9 101112131415161718例5.1建立文件將變量a、b的值互換。Applicatio函數文件Application
of
Matlab
Language2013/9/106fexch.mfunction
[a,b]
=exch(a,b)c
=
a;
a
=
b;
b
=
c;然后在命令窗口調用該函數文件:clear;x
=
1:10;y=[11,12,13,14;15,16,17,18];[x,y]=fexch(x,y)輸出結果為:a
=b
=1 2 3 4 5 6 7 8 9 10函數參數a,b,c未保留在工作空間中,x,y保留在工作空間中。1112131415161718函數文件ApplicationofMatlabLangM文件的建立與打開M文件是一個文本文件,可以用任何編輯程序來建立和編輯,一般最常用的是使用Matlab提供的文本編輯器。作環(huán)境。該編輯器是一個集編輯和調試于一體的工Application
of
Matlab
Language2013/9/107M文件的建立與打開M文件是一個文本文件,可以用任何編輯程序來5.2
程序控制結構Application
of
Matlab
Language2013/9/108
順序結構
選擇結構
循環(huán)結構任何復雜的程序都可以由這3種基本結構構成。5.2程序控制結構ApplicationofMatla5.2.1
順序結構Application
of
Matlab
Language2013/9/109
順序結構是指按照程序中語句的排列順序依次執(zhí)行,直到程序的最后一個語句。(最簡單的一種程序)1、數據的輸入從鍵盤輸入數據,則可以使用input函數來進行,調用格式為:A=input(提示信息,選項);其中提示信息為一個字符串,用于提示用戶輸入數據。
例如:從鍵盤輸入A矩陣,可以采用下面的命令來完成
A
=
input(‘輸入A矩陣’);如果在input函數調用時采用’s’選項,則允許用戶輸入一個字符串。例:xm
=
input(‘What’’s
your
name?’,’s’);5.2.1順序結構ApplicationofMatla5.2.1順序結構Application
of
Matlab
Language2013/9/10102、數據的輸出
命令窗口輸出函數主要有disp函數,其調用格式為:
disp(輸出項)
其中輸出項既可以為字符串,也可以為矩陣。例如:
A
=
‘Hello,
Tom’;disp(A)輸出為:Hello,
Tom又如:A=[1,2,3;4,5,6;7,8,9];disp(A)輸出為:%disp函數輸出格式更緊湊1234567895.2.1順序結構ApplicationofMatla5.2.1
順序結構Application
of
Matlab
Language2013/9/1011例5.2 求一元二次方程
ax2
bx
c
0
的根。
由于Matlab能進行復數運算,所以不需要判斷方程的判別式,可直接根據求根公式求根。程序如下: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)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);程序輸出為:a=?4b=?78c=?54x1=-0.7188,x2=-18.78125.2.1順序結構ApplicationofMatla5.2.1順序結構Application
of
Matlab
Language2013/9/10123、程序的暫停
程序執(zhí)行過程中暫停,可用pause函數,其調用格式為:pause(延遲描述)
如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。若要強行中止程序的運行可按Ctrl+C鍵。5.2.1順序結構ApplicationofMatla5.2.2選擇結構Application
of
Matlab
Language2013/9/1013選擇結構是根據給定的條件成立或不成立,分別執(zhí)行不同的語句。Matlab用于實現選擇結構的語句有if語句,switch語句和try語句。1.
if語句
在Matlab中,if語句有3種格式。
(1)單分支if語句語句格式:if
條件語句組end例如:當x是整數矩陣時,輸出x的值if
fix(x)==xdisp(x);end5.2.2選擇結構ApplicationofMatla5.2.2
選擇結構Application
of
Matlab
Language2013/9/1014(2)雙分支if語句語句格式:if
條件語句組
1else語句組 2end當條件成立時,執(zhí)行語句組1,否則執(zhí)行語句組2,然后再執(zhí)行if語句的后續(xù)語句。5.2.2選擇結構ApplicationofMatla5.2.2選擇結構例5.3
計算分段函數:x2
1,
x
10Application
of
Matlab
Language2013/9/1015cos(
x
1)
x x
x
,
x
10y
程序如下:x
=
input(‘請輸入x的值:');if
x
==
10y
=
cos(x+1)+sqrt(x*x+1);elsey
=
x*sqrt(x+sqrt(x));endy也可以用單分支if語句來實現:x
=
input('請輸入x的值:
');y
=
cos(x+1)+sqrt(x*x+1);if
x~=10y
=
x*sqrt(x+sqrt(x));endy5.2.2選擇結構例5.3計算分段函數:x21,5.2.2選擇結構Application
of
Matlab
Language2013/9/1016(3)多分支if語句語句格式:if
條件1語句組
1elseif
條件2語句組 2…elseif 條件m
語句組 melse語句組nend5.2.2選擇結構ApplicationofMatla例5.4
大小寫字母的置換Application
of
Matlab
Language2013/9/1017輸入一個字符,若為大寫字母,則輸出其對應的小寫字母;若為小寫字母,則輸出其對應的大寫字母;若為數字字符則輸出其對應的數值,若為其他字符則原樣輸出。程序如下:c
=
input(‘請輸入一個字符’,‘s’);if
c
>=‘A’
&
c<=‘Z’disp(setstr(abs(c)+
abs(‘a’)-abs(‘A’)));elseif
c>=‘a’
&
c<=‘z’disp(setstr(abs(c)-abs(‘a’)
+
abs(‘A’)));elseif
c>=‘0’
&
c<=‘9’disp(abs(c)-abs(‘0’));elsedisp(c);endsetstr函數可以得到ASCⅡ碼例5.4大小寫字母的置換ApplicationofMa5.2.2
選擇結構Application
of
Matlab
Language2013/9/10182、switch語句
switch語句根據表達式的取值不同,分別執(zhí)行不同的語句,其語句格式:
switch
表達式case表達式1語句組1case表達式2語句組2…case表達式m語句組motherwise語句組
nendswitch子句后面的表達式應為一個標量或一個字符串;
case子句后面的表達式不僅可以為一個標量或一個字符串,還可以為一個元胞矩陣。5.2.2選擇結構ApplicationofMatla例5.5Application
of
Matlab
Language2013/9/1019某商場對顧客所購買的商品實行打折銷售,標準如下:price<200200<=price<500500<=price<10001000<=price<25002500<=price<50005000<=price沒有折扣3%折扣5%折扣8%折扣10%折扣14%折扣輸入所售商品的價格,求其實際銷售價格。請同學們試著編程實現。例5.5ApplicationofMatlabLang程序如下Application
of
Matlab
Language2013/9/1020price
=
input(‘請輸入商品價格’);switch
fix(price/100)case{0,1}rate
=
0;case{2,3,4}rate
=
3/100;
case
num2cell(5:9)rate
=
5/100;case
num2cell(10:24)rate
=
8/100;case
num2cell(25:49)rate
=
10/100;otherwiserate
=
14/100;endprice
=
price*(1-rate)%價格小于200%價格大于等于200但小于500%價格大于等于500但小于1000%價格大于等于1000但小于2500%價格大于等于2500但小于5000%價格大于等于5000%輸出商品實際銷售價格num2cell函數是將數值矩陣轉化為單元矩陣。程序如下ApplicationofMatlabLang5.2.2
選擇結構Application
of
Matlab
Language2013/9/10213.try語句try語句是一種試探性執(zhí)行語句,其語句格式為:try語句組1catch語句組2endtry語句先試探性執(zhí)行語句組1,如果在執(zhí)行過程中出現錯誤,則將錯誤信息賦給保留的lasterr變量,并轉去執(zhí)行語句組2.5.2.2選擇結構ApplicationofMatla例5.6Application
of
Matlab
Language2013/9/1022矩陣乘法運算要求兩矩陣的維數相容,否則會出錯。先求兩矩陣的乘積,若出錯則自動轉去求兩矩陣的點乘。程序如下:A=[1,2,3;4,5,6];B
=[7,8,9;10,11,12];tryC=
A*B;catchC=A.*B;endClasterr %顯示出錯原因C=7 16 2740 55 72ans=Error
using==>mtimesInner
matrixdimensionsmustagree.例5.6ApplicationofMatlabLang5.2.3循環(huán)結構Application
of
Matlab
Language2013/9/1023循環(huán)是指按照給定的條件,重復執(zhí)行指定的語句,Matlab提供了兩種實現循環(huán)結構的語句:for語句和while語句。1、for語句for語句的格式為:for
循環(huán)變量
=表達式1:表達式2:表達式3循環(huán)體語句end
其中表達式1的值為循環(huán)變量的初值,表達式2的值為步長,表達式3的值為循環(huán)變量的終值。步長為1時,表達式2可以省略。5.2.3循環(huán)結構ApplicationofMatla例5.7已知 y
12
22
32
n2程序如下:,當n=100時,求y的值。y
=
0;n
=100;for
i=1:ny=
y+1/i/i;endy輸出結果為:y
=1.63501 1 11利用Matlab的特點,常用向量運算來代替循環(huán)操作,程序可以如下:n=100;i=1:n;f
=
1./i.^2;y
=
sum(f)Application
of
Matlab
Language2013/9/1024例5.7已知 y ,當n=100時,求y的5.2.3循環(huán)結構Application
of
Matlab
Language2013/9/10252、while語句while語句的一般格式為:while條件循環(huán)體語句end
其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。5.2.3循環(huán)結構ApplicationofMatla從鍵盤輸入若干個數,當輸入0時結束輸入,求這些數的平均值和它們的和。Application
of
Matlab
Language2013/9/1026sum
=
0;n=
0;x
=
input(‘Enter
a
number(end
in
0):’);while(x~=0)sum
=
sum+x;n=
n+1;x
=
input(‘Enter
a
number(end
in
0):’);endif(n>0)summean=
sum/nend例5.8輸出結果為:Enter
a
number(end
in
0):67Enter
a
number(end
in
0):89Enter
a
number(end
in
0):93Enter
a
number(end
in
0):70Enter
a
number(end
in
0):0sum
=319mean
=79.7500從鍵盤輸入若干個數,當輸入0時結束輸入,求這些數的平均值和A5.2.3
循環(huán)結構Application
of
Matlab
Language2013/9/10273、break語句和continur語句它們一般與if語句配合使用。break語句用于終止循環(huán)的執(zhí)行。當在循環(huán)體內執(zhí)行到該語句時,程序將跳出循環(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句。continue語句控制跳過循環(huán)體中的某些語句。當在循環(huán)體內執(zhí)行到該語句時,程序將跳過循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。5.2.3循環(huán)結構ApplicationofMatla例5.9
求[100,200]之間第一個能被21整除的整數。Application
of
Matlab
Language2013/9/1028程序如下:for
n
=
100:200ifrem(n,21)~=0;continueendbreakendn
程序輸出結果為:n
=105例5.9求[100,200]之間第一個能被21整除的整數。Matlab程序設計第9講Matlab程序設計第9講295.3
函數文件Application
of
Matlab
Language2013/9/1030函數文件是另一種形式的M文件,每一個函數文件都定義一個函數。Matlab提供的標準函數大部分是由函數文件定義的。5.3.1函數文件的基本結構函數文件由function語句引導,其基本結構為:
function
輸出形參表
=
函數名(輸入形參表)注釋說明部分函數體語句其中,以function開頭的一行為引導行,表示該M文件是一個函數文件。當輸出形參多于一個時,應該用方括號括起來。5.3函數文件ApplicationofMatlab說明:Application
of
Matlab
Language2013/9/10311.
關于函數文件名函數文件名通常由函數名再加上擴展名.m組成。當函數文件名與函數名不同時,Matlab將忽略函數名而確認文件名因此調用時使用函數文件名。2.
關于注釋說明部分注釋說明包括3部分:①
緊隨引導行之后以%開頭的第一注釋行。
這一行一般包括大寫的函數文件名和函數功能簡要描述,供lookfor關鍵詞查詢和help在線幫助時使用。②
第一注釋行及之后連續(xù)的注釋行。通常包括函數輸入/輸出參數的含義及調用格式說明等信息,構成全部在線幫助文本。說明:ApplicationofMatlabLangu說明:Application
of
Matlab
Language2013/9/1032③
與在線幫助文本相隔一空行的注釋行。包括函數文件編寫和修改的信息,如作者和版本等。3、關于return語句
如果在函數文件中插入了return語句,則執(zhí)行到該語句就結束函數的執(zhí)行,流程轉至調用該函數的位置。通常也不使用return語句。
例5.10
編寫函數文件,求半徑為r的圓的面積和周長。
函數文件如下:function
[s,p]
=
fcircle(r)%FCIRCLEcalculatethe
area
and
perimeter
of
acircle
of
radii
r%r%s%p圓半徑圓面積圓周長%2013年8月8日編s
=pi*r*r;p
=
2*pi*r;說明:ApplicationofMatlabLangu說明:Application
of
Matlab
Language2013/9/1033將以上函數文件以文件名fcircle.m保存,然后在命令窗口調用。[s,p]
=
fcircle(10)輸出結果是:s
=314.1593p
=62.8319采用help命令或lookfor命令可以顯示出注釋說明部分的內容。help
fcircle屏幕顯示FCIRCLEcalculate
the
area
andperimeter
of
a
circle
of
radii
rrsp圓半徑圓面積圓周長說明:ApplicationofMatlabLangu5.3.2函數調用Application
of
Matlab
Language2013/9/1034函數調用的一般格式是:[輸出實參表]
=
函數名(輸入實參表)
注意:函數調用時,各實參出現的順序、個數,應與函數定義時相同。
例5.11
利用函數文件,實現直角坐標(x,y)與極坐標(ρ,θ)之間的轉換。函數文件:tran.m:function
[rho,theta]
=tran(x,y)rho
=
sqrt(x*x+y*y);theta
=
atan(y/x);調用tran.m的命令文件main1.m:
x
=
input(‘please
inputx=:’);y=input(‘pleaseinputy=:’);[rho,the]=tran(x,y);rhothe5.3.2函數調用ApplicationofMatla函數的嵌套調用Application
of
Matlab
Language2013/9/1035在Matlab中,函數可以嵌套調用,即一個函數可以調用別的函數。一個函數調用自身稱為函數的遞歸調用。例5.12
利用函數的遞歸調用,求n!。n!本身就是以遞歸的形式定義的:1,n!
n
1n(n
1)!, n
1顯然,求n!需要求(n-1)!,這時可采用遞歸調用。函數如下:functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;
%遞歸調用求(n-1)!end函數的嵌套調用ApplicationofMatlabL函數的嵌套調用Application
of
Matlab
Language2013/9/1036在命令文件中調用該函數文件,求
s
=
1!+2!+3!+4!+5!。s
=
0;for
i
=
1:5s
=s
+
factor(i);ends在命令窗口運行命令文件,結果如下:s
=153函數的嵌套調用ApplicationofMatlabL5.3.3函數參數的可調性Application
of
Matlab
Language2013/9/1037Matlab在函數調用上有一個與一般高級語言不同之處:
函數所傳遞參數數目的可調性,即參數的數量可以改變。
在調用函數時,Matlab用兩個預定義變量nargin和nargout分別記錄調用該函數時的輸入實參和輸出實參的個數。例5.13
nargin用法示例函數文件examp.m:function
fout
=charray(a,b,c)if
nargin
==
1
fout
=
a;endif
nargin
==
2
fout
=
a+b;endif
nargin
==
3fout
=
(a*b*c)/2;end命令文件:x
=
[1:3];y=[1;2;3];examp(x)examp(x,y’)examp(x,y,3)5.3.3函數參數的可調性ApplicationofM5.3.4
全局變量與局部變量Application
of
Matlab
Language2013/9/1038Matlab中,函數文件中的變量是局部變量。如在若干函數中,都把某一變量定義為全局變量,那么這些函數將共用這個變量。全局變量的作用域是整個Matlab的工作空間,所有函數都可以對它進行存取和修改。全局變量用global命令定義,格式為:global
變量名例5.13
全局變量應用示例。先建立函數文件wadd.m,該函數將輸入的參數加權相加:function
f
=
wadd(x,y)global
ALPHABETAf
=
ALPHA*x+BETA*y;在命令窗口中輸入:global
ALPHABETAALPHA=
1;BETA
=
2;s
=
wadd(1,2)輸出為:s
=55.3.4全局變量與局部變量Applicationof5.4
程序調試Application
of
Matlab
Language2013/9/1039程序調試是程序設計的重要環(huán)節(jié),也是程序設計人員必須掌握的重要技能。Matlab提供了相應的程序調試功能,即可以通過文本編輯器對程序進行調試,又可以在命令窗口結合具體的命令進行。5.4.1
程序調試概述一般說來,應用程序的錯誤有兩類,一類是語法錯誤,另一類是運行時的錯誤。語法錯誤,給出相應的錯誤信息,并標出錯誤在程序中的行號。例如:輸入下列程序:A
=
87;B
=
9.3;C=
A+*B;系統(tǒng)將給出錯誤信息:???Error:
File:
Untitled1.m
Line:
3
Column:
7Unexpected
MATLABoperator.通過分析Matlab給出的錯誤信息,不難排查程序中的語法錯誤。5.4程序調試ApplicationofMatlab5.4.1
程序調試概述Matlab對程序邏輯錯誤時無能為力的,不會給出任何提示信息??梢酝ㄟ^調試手段來發(fā)現。采取的方法如下:①
將程序的一些主要中間結果輸出到命令窗口,從而確定錯誤的區(qū)段。②
使用Matlab的調試菜現程序調試。③
或使用命令方式來實單(debug),通過圖像界面操作來現程序調試。實Application
of
Matlab
Language2013/9/10405.4.1程序調試概述Matlab對程序邏輯錯誤時無能為力5.4.2
Matlab調試菜單2.斷點操作stop
if
error/warnings:
在程序執(zhí)行出現錯誤或警告時,停止程序運行,進入調試狀態(tài)。1、控制單步運行
step:單步運行,不進入函數;
step
in:
單步運行,進入函數;
step
out:停止單步運行;save
and
run:存儲文件并開始運行。Application
of
Matlab
Language2013/9/10415.4.2Matlab調試菜單2.斷點操作1、控制單步運例5.15
程序的調試有一個求水仙花數的程序ex.m,試設置斷點來控制程序執(zhí)行。調試步驟如下:①
在if語句處設置斷點:將插入點移至if語句所在行,選擇Debug菜單的Set/Clear
Breakpoint命令,在該行前面有一個紅色圓點,程序運行時將在斷點處暫停。②
運行程序,檢查中間結果。在命令窗口輸入命令:ex在窗口命令的K>>后輸入變量名,檢性。③
選擇Debug菜單中的Continue命令,程變量的值,一直到發(fā)現問題為止。④
切換工作空間,結束對程序的調試。打中選擇Base,即將工作空間切換到主Clear
Breakpoint
命令清楚已設置的箭頭,完成調試。查變量的值??梢苑治雠袛喑绦?/p>
的正確序繼續(xù)運行,在斷點處又暫停,再檢查開編輯窗口中的Stack下拉列表框,從工作空間。然后選擇Debug菜單中的Set斷點,在選擇Continue命令,去除白色Application
of
Matlab
Language2013/9/1042例5.15程序的調試有一個求水仙花數的程序ex.m,試設置5.5Matlab矩陣分析與處理Application
of
Matlab
Language2013/9/10435.5.1
特殊矩陣
常見的特殊矩陣有零矩陣、幺矩陣、單位矩陣等,這類特殊矩陣在應用中具有通用性。1、通用的特殊矩陣
常用的產生通用特殊矩陣的函數有:
zeros:產生全0矩陣(零矩陣)。ones:
產生全1矩陣(幺矩陣)。
eye:
產生單位矩陣。rand:產生0~1間均勻分布的隨機矩陣。
randn:產生均值為0,方差為1的標準正態(tài)分布隨機矩陣。產生(0,1)區(qū)間均勻分布隨機矩陣使用rand函數產生均值為0,方差為1的標準正態(tài)分布隨機矩陣使用randn函數5.5Matlab矩陣分析與處理Applicationo例5.16
建立隨機矩陣:Application
of
Matlab
Language2013/9/1044①
在區(qū)間[20,50]內均勻分布的5階隨機矩陣。②
均值為0.6,方差為0.1的5階正態(tài)分布隨機矩陣。命令如下:x=
20+(50-20)*rand(5)x=y
=
0.6
+sqrt(0.1)*randn(5)48.503942.862938.463032.171221.736726.934233.694043.758148.064130.586038.205320.555147.654447.507144.395034.579544.642242.146232.308120.295846.739033.341125.288046.809524.1667例5.16建立隨機矩陣:ApplicationofMa5.5
矩陣結構變換Application
of
Matlab
Language2013/9/10451、對角陣與三角陣只有對角線上有非零元素的矩陣稱為對角矩陣,在研究矩陣時,
有時候需要將矩陣的對角線上的元素提取出來形成一個列向量,有時也需要用一個向量構造一個對角陣。(1)提取矩陣的對角線元素函數:diag例如:A=[1,2,3;4,5,6];D
=
diag(A)D
=15diag函數還有一種形式:diag(A,k)提取第k條對角線的元素。例如:D1
=
diag(A,1)D
=265.5矩陣結構變換ApplicationofMatla5.5
矩陣結構變換Application
of
Matlab
Language2013/9/1046(2)構造對角矩陣如果V是一個m個元素的向量,diag(V)將產生一個m×m對角矩陣,其主對角線元素即為向量V的元素。例如:diag([1,2,-1,4])ans
=例如:diag(1:3,-1)ans=1000020000-10000400001000020000305.5矩陣結構變換ApplicationofMatla例5.17Application
of
Matlab
Language2013/9/1047建立一個5×5矩陣A,然后將A的第一行元素乘以1,第二行乘以2,…第五行乘以5。解:用一個對角矩陣左乘一個矩陣時,相當于用對角陣的第一個元素乘以該矩陣的第一行,依次類推。命令如下:A=ones(5);D=
diag(1:5);D*Aans
=1111122222333334444455555例5.17ApplicationofMatlabLan5.6
矩陣求逆與線性方程組求解Application
of
Matlab
Language2013/9/10485.6.1
矩陣的逆對于一個方陣A,如果存在一個與其同階的方陣B,使得:(I為單位矩陣)則稱B為A的逆矩陣,當然,A也是B的逆矩陣。求方陣A的逆矩陣可調用函數inv(A)。例5.18
求方陣A的逆矩陣,且驗證。A=[1,-1,1;5,-4,3;2,1,1];B
=
inv(A);A*Bans
=A
B
B
A
I1.000000-0.00001.00000-0.000001.00005.6矩陣求逆與線性方程組求解Applicationof5.6.2
用矩陣求逆方法求解線性方程組將包含n個未知數,由n個方程構成的線性方程組表示為:其矩陣表示形式為:其中:因此:
a11
x1
a12
x2
a1n
xn
b1
a2n
xn
b2
a21
x1
a22
x2
an1
x1
an2
x2
Ax
b
ann
xn
bn1111121nA
a21
a22a2n
,
x
x2
,
b
b2
an1
an2x
A1bann
xn
bn
x
b
a aa
Application
of
Matlab
Language2013/9/10495.6.2用矩陣求逆方法求解線性方程組將包含n個未知數,由例5.19
用求逆矩陣A的方法解線性方程組Application
of
Matlab
Language2013/9/1050命令如下:A=[1,2,3;1,4,9;1,8,27];b=[5,-2,6]’;x
=inv(A)*bx
=23.0000-14.50003.6667%x=
A\b也可以運用左除運算符求解。
x
2
y
3z
5
x
4
y
9z
2
x
8
y
27z
6例5.19用求逆矩陣A的方法解線性方程組Applicati5.7矩陣行列式值Application
of
Matlab
Language2013/9/1051把一個方程看做一個行列式,并按行列式的規(guī)則求值,稱為行列式的值。在Matlab中,使用函數det(A)得到。例如:A=rand(5)A=B
=-0.00710.95010.76210.61540.40570.05790.23110.45650.79190.93550.35290.60680.01850.92180.91690.81320.48600.82140.73820.41030.00990.89130.44470.17630.89360.1389B
=
det(A)5.7矩陣行列式值ApplicationofMatlaMatlab程序設計第8講Matlab程序設計第8講52Matlab命令的執(zhí)行方式Application
of
Matlab
Language2013/9/1053
交互式命令執(zhí)行方式(命令窗口)逐條輸入,逐條執(zhí)行,操作簡單、直觀,但速度慢,執(zhí)行過程不能保留。
M文件的程序執(zhí)行方式將命令編成程序存儲在一個文件中(M文件),依次運行文件中的命令,可以重復進行。
Matlab程序設計有傳統(tǒng)高級語言的特征,又有自己獨特的特點,可以利用數據結構的特點,使程序結構簡單,編程效率高。Matlab命令的執(zhí)行方式ApplicationofMa5.1 M文件的分類Application
of
Matlab
Language2013/9/1054
用Matlab語言編寫的程序,稱為M文件。是由若干Matlab命令組合在一起構成的,它可以完成某些操作,也可以實現某種算法。
M文件根據調用方式的不同分為兩類:命令文件(Script
File)函數文件(Function
File)
它們的擴展名都是.m5.1 M文件的分類ApplicationofMatla命令文件和函數文件的區(qū)別Application
of
Matlab
Language2013/9/1055
命令文件沒有輸入參數,也不返回輸出參數;函數文件可以帶輸入參數,也可以返回輸出參數。
命令文件對工作空間中的變量進行操作,文件中所有命令的執(zhí)行結果也返回工作空間中;函數文件中定義的變量為局部變量,當函數文件執(zhí)行完畢時,這些變量也被清除。
命令文件可以直接運行;函數文件不能直接運行,要以函數調用的方式來調用它。命令文件和函數文件的區(qū)別ApplicationofMat例5.1
建立文件將變量a、b的值互換。Application
of
Matlab
Language2013/9/1056命令文件:clear;a
=
1:10;b=[11,12,13,14;15,16,17,18];c
=
a;
a
=
b;
b
=c;ab將文件保存為exch,并在命令窗口執(zhí)行。執(zhí)行結果:a
=b
=1 2 3 4 5 6 7 8 9 101112131415161718例5.1建立文件將變量a、b的值互換。Applicatio函數文件Application
of
Matlab
Language2013/9/1057fexch.mfunction
[a,b]
=exch(a,b)c
=
a;
a
=
b;
b
=
c;然后在命令窗口調用該函數文件:clear;x
=
1:10;y=[11,12,13,14;15,16,17,18];[x,y]=fexch(x,y)輸出結果為:a
=b
=1 2 3 4 5 6 7 8 9 10函數參數a,b,c未保留在工作空間中,x,y保留在工作空間中。1112131415161718函數文件ApplicationofMatlabLangM文件的建立與打開M文件是一個文本文件,可以用任何編輯程序來建立和編輯,一般最常用的是使用Matlab提供的文本編輯器。作環(huán)境。該編輯器是一個集編輯和調試于一體的工Application
of
Matlab
Language2013/9/1058M文件的建立與打開M文件是一個文本文件,可以用任何編輯程序來5.2
程序控制結構Application
of
Matlab
Language2013/9/1059
順序結構
選擇結構
循環(huán)結構任何復雜的程序都可以由這3種基本結構構成。5.2程序控制結構ApplicationofMatla5.2.1
順序結構Application
of
Matlab
Language2013/9/1060
順序結構是指按照程序中語句的排列順序依次執(zhí)行,直到程序的最后一個語句。(最簡單的一種程序)1、數據的輸入從鍵盤輸入數據,則可以使用input函數來進行,調用格式為:A=input(提示信息,選項);其中提示信息為一個字符串,用于提示用戶輸入數據。
例如:從鍵盤輸入A矩陣,可以采用下面的命令來完成
A
=
input(‘輸入A矩陣’);如果在input函數調用時采用’s’選項,則允許用戶輸入一個字符串。例:xm
=
input(‘What’’s
your
name?’,’s’);5.2.1順序結構ApplicationofMatla5.2.1順序結構Application
of
Matlab
Language2013/9/10612、數據的輸出
命令窗口輸出函數主要有disp函數,其調用格式為:
disp(輸出項)
其中輸出項既可以為字符串,也可以為矩陣。例如:
A
=
‘Hello,
Tom’;disp(A)輸出為:Hello,
Tom又如:A=[1,2,3;4,5,6;7,8,9];disp(A)輸出為:%disp函數輸出格式更緊湊1234567895.2.1順序結構ApplicationofMatla5.2.1
順序結構Application
of
Matlab
Language2013/9/1062例5.2 求一元二次方程
ax2
bx
c
0
的根。
由于Matlab能進行復數運算,所以不需要判斷方程的判別式,可直接根據求根公式求根。程序如下: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)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);程序輸出為:a=?4b=?78c=?54x1=-0.7188,x2=-18.78125.2.1順序結構ApplicationofMatla5.2.1順序結構Application
of
Matlab
Language2013/9/10633、程序的暫停
程序執(zhí)行過程中暫停,可用pause函數,其調用格式為:pause(延遲描述)
如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。若要強行中止程序的運行可按Ctrl+C鍵。5.2.1順序結構ApplicationofMatla5.2.2選擇結構Application
of
Matlab
Language2013/9/1064選擇結構是根據給定的條件成立或不成立,分別執(zhí)行不同的語句。Matlab用于實現選擇結構的語句有if語句,switch語句和try語句。1.
if語句
在Matlab中,if語句有3種格式。
(1)單分支if語句語句格式:if
條件語句組end例如:當x是整數矩陣時,輸出x的值if
fix(x)==xdisp(x);end5.2.2選擇結構ApplicationofMatla5.2.2
選擇結構Application
of
Matlab
Language2013/9/1065(2)雙分支if語句語句格式:if
條件語句組
1else語句組 2end當條件成立時,執(zhí)行語句組1,否則執(zhí)行語句組2,然后再執(zhí)行if語句的后續(xù)語句。5.2.2選擇結構ApplicationofMatla5.2.2選擇結構例5.3
計算分段函數:x2
1,
x
10Application
of
Matlab
Language2013/9/1066cos(
x
1)
x x
x
,
x
10y
程序如下:x
=
input(‘請輸入x的值:');if
x
==
10y
=
cos(x+1)+sqrt(x*x+1);elsey
=
x*sqrt(x+sqrt(x));endy也可以用單分支if語句來實現:x
=
input('請輸入x的值:
');y
=
cos(x+1)+sqrt(x*x+1);if
x~=10y
=
x*sqrt(x+sqrt(x));endy5.2.2選擇結構例5.3計算分段函數:x21,5.2.2選擇結構Application
of
Matlab
Language2013/9/1067(3)多分支if語句語句格式:if
條件1語句組
1elseif
條件2語句組 2…elseif 條件m
語句組 melse語句組nend5.2.2選擇結構ApplicationofMatla例5.4
大小寫字母的置換Application
of
Matlab
Language2013/9/1068輸入一個字符,若為大寫字母,則輸出其對應的小寫字母;若為小寫字母,則輸出其對應的大寫字母;若為數字字符則輸出其對應的數值,若為其他字符則原樣輸出。程序如下:c
=
input(‘請輸入一個字符’,‘s’);if
c
>=‘A’
&
c<=‘Z’disp(setstr(abs(c)+
abs(‘a’)-abs(‘A’)));elseif
c>=‘a’
&
c<=‘z’disp(setstr(abs(c)-abs(‘a’)
+
abs(‘A’)));elseif
c>=‘0’
&
c<=‘9’disp(abs(c)-abs(‘0’));elsedisp(c);endsetstr函數可以得到ASCⅡ碼例5.4大小寫字母的置換ApplicationofMa5.2.2
選擇結構Application
of
Matlab
Language2013/9/10692、switch語句
switch語句根據表達式的取值不同,分別執(zhí)行不同的語句,其語句格式:
switch
表達式case表達式1語句組1case表達式2語句組2…case表達式m語句組motherwise語句組
nendswitch子句后面的表達式應為一個標量或一個字符串;
case子句后面的表達式不僅可以為一個標量或一個字符串,還可以為一個元胞矩陣。5.2.2選擇結構ApplicationofMatla例5.5Application
of
Matlab
Language2013/9/1070某商場對顧客所購買的商品實行打折銷售,標準如下:price<200200<=price<500500<=price<10001000<=price<25002500<=price<50005000<=price沒有折扣3%折扣5%折扣8%折扣10%折扣14%折扣輸入所售商品的價格,求其實際銷售價格。請同學們試著編程實現。例5.5ApplicationofMatlabLang程序如下Application
of
Matlab
Language2013/9/1071price
=
input(‘請輸入商品價格’);switch
fix(price/100)case{0,1}rate
=
0;case{2,3,4}rate
=
3/100;
case
num2cell(5:9)rate
=
5/100;case
num2cell(10:24)rate
=
8/100;case
num2cell(25:49)rate
=
10/100;otherwiserate
=
14/100;endprice
=
price*(1-rate)%價格小于200%價格大于等于200但小于500%價格大于等于500但小于1000%價格大于等于1000但小于2500%價格大于等于2500但小于5000%價格大于等于5000%輸出商品實際銷售價格num2cell函數是將數值矩陣轉化為單元矩陣。程序如下ApplicationofMatlabLang5.2.2
選擇結構Application
of
Matlab
Language2013/9/10723.try語句try語句是一種試探性執(zhí)行語句,其語句格式為:try語句組1catch語句組2endtry語句先試探性執(zhí)行語句組1,如果在執(zhí)行過程中出現錯誤,則將錯誤信息賦給保留的lasterr變量,并轉去執(zhí)行語句組2.5.2.2選擇結構ApplicationofMatla例5.6Application
of
Matlab
Language2013/9/1073矩陣乘法運算要求兩矩陣的維數相容,否則會出錯。先求兩矩陣的乘積,若出錯則自動轉去求兩矩陣的點乘。程序如下:A=[1,2,3;4,5,6];B
=[7,8,9;10,11,12];tryC=
A*B;catchC=A.*B;endClasterr %顯示出錯原因C=7 16 2740 55 72ans=Error
using==>mtimesInner
matrixdimensionsmustagree.例5.6ApplicationofMatlabLang5.2.3循環(huán)結構Application
of
Matlab
Language2013/9/1074循環(huán)是指按照給定的條件,重復執(zhí)行指定的語句,Matlab提供了兩種實現循環(huán)結構的語句:for語句和while語句。1、for語句for語句的格式為:for
循環(huán)變量
=表達式1:表達式2:表達式3循環(huán)體語句end
其中表達式1的值為循環(huán)變量的初值,表達式2的值為步長,表達式3的值為循環(huán)變量的終值。步長為1時,表達式2可以省略。5.2.3循環(huán)結構ApplicationofMatla例5.7已知 y
12
22
32
n2程序如下:,當n=100時,求y的值。y
=
0;n
=100;for
i=1:ny=
y+1/i/i;endy輸出結果為:y
=1.63501 1 11利用Matlab的特點,常用向量運算來代替循環(huán)操作,程序可以如下:n=100;i=1:n;f
=
1./i.^2;y
=
sum(f)Application
of
Matlab
Language2013/9/1075例5.7已知 y ,當n=100時,求y的5.2.3循環(huán)結構Application
of
Matlab
Language2013/9/10762、while語句while語句的一般格式為:while條件循環(huán)體語句end
其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。5.2.3循環(huán)結構ApplicationofMatla從鍵盤輸入若干個數,當輸入0時結束輸入,求這些數的平均值和它們的和。Application
of
Matlab
Language2013/9/1077sum
=
0;n=
0;x
=
input(‘Enter
a
number(end
in
0):’);while(x~=0)sum
=
sum+x;n=
n+1;x
=
input(‘Enter
a
number(end
in
0):’);endif(n>0)summean=
sum/nend例5.8輸出結果為:Enter
a
number(end
in
0):67Enter
a
number(end
in
0):89Enter
a
number(end
in
0):93Enter
a
number(end
in
0):70Enter
a
number(end
in
0):0sum
=319mean
=79.7500從鍵盤輸入若干個數,當輸入0時結束輸入,求這些數的平均值和A5.2.3
循環(huán)結構Application
of
Matlab
Language2013/9/10783、break語句和continur語句它們一般與if語句配合使用。break語句用于終止循環(huán)的執(zhí)行。當在循環(huán)體內執(zhí)行到該語句時,程序將跳出循環(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句。continue語句控制跳過循環(huán)體中的某些語句。當在循環(huán)體內執(zhí)行到該語句時,程序將跳過循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。5.2.3循環(huán)結構ApplicationofMatla例5.9
求[100,200]之間第一個能被21整除的整數。Application
of
Matlab
Language2013/9/1079程序如下:for
n
=
100:200ifrem(n,21)~=0;continueendbreakendn
程序輸出結果為:n
=105例5.9求[100,200]之間第一個能被21整除的整數。Matlab程序設計第9講Matlab程序設計第9講805.3
函數文件Application
of
Matlab
Language2013/9/1081函數文件是另一種形式的M文件,每一個函數文件都定義一個函數。Matlab提供的標準函數大部分是由
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濮陽縣2025年五年級數學第二學期期末監(jiān)測模擬試題含答案
- 提升自動化水平選擇好的電磁閥解決方案
- 供應商選擇與評估管理制度制度
- 投影水幕設計施工方案
- 寧波單層廠房施工方案
- 電力搶修施工方案
- 汽車尾燈資料
- 2025年家居業(yè)務面試題及答案
- 6個紅包紙折燈籠的制作方法
- 5年級下冊英語單詞第三單元帶讀音朗讀
- 2025年合肥幼兒師范高等專科學校單招職業(yè)適應性測試題庫新版
- 2025年浙江寧波交投公路營運管理限公司招聘12人高頻重點模擬試卷提升(共500題附帶答案詳解)
- 勞務派遣勞務外包項目方案投標文件(技術方案)
- 第四單元 第三課 拍攝學校創(chuàng)意短視頻教學設計 2024-2025學年西交大版(2024)初中信息技術七年級上冊
- 2025年蘇州工業(yè)職業(yè)技術學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024年尖葉菠菜種子項目可行性研究報告
- DB3306T 074-2025 餐用具消毒房管理規(guī)范
- 2025年重慶市初中學業(yè)水平暨高中招生考試數學試題預測卷(二)
- “記憶中的人、事兒”為副標題(四川眉山原題+解題+范文+副標題作文“追求”主題)-2025年中考語文一輪復習之寫作
- 2024年吉安職業(yè)技術學院單招職業(yè)技能測試題庫附答案
- 消化系統(tǒng)疾病患者的睡眠質量改善及失眠應對措施
評論
0/150
提交評論