版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、電磁場實(shí)驗(yàn)仿真指導(dǎo)書1、Matlab 基礎(chǔ)2、實(shí)驗(yàn)內(nèi)容 2.1 預(yù)習(xí) 點(diǎn)電荷電場分布 2.2 實(shí)驗(yàn)一 電偶極子電場分布仿真 2.3 實(shí)驗(yàn)二 特殊邊界條件的電場分布 2.4 實(shí)驗(yàn)三 直導(dǎo)線的磁場分布 2.5 實(shí)驗(yàn)四 磁偶極子的磁場分布1 MATLAB 基礎(chǔ)1.1 簡介MATLAB是一門計算機(jī)程序語言,取名源于Matrix Laboratory,意在以矩陣方式處理數(shù)據(jù)。一般認(rèn)為MATLAB的典型應(yīng)用包括:數(shù)值計算與分析、符號運(yùn)算、建模與仿真、數(shù)據(jù)可視化、圖形處理及可視化、基于圖形用戶界面的應(yīng)用程序開發(fā)。MATLAB7.3.0啟動后界面如圖1所示。圖1 MATLAB7.3.0啟動后界面命令窗口(Co
2、mmand Window):(1) 用于執(zhí)行MATLAB命令,正常情況下提示符為“>>”,表示MATLAB進(jìn)入工作狀態(tài)。(2) 在提示符后輸入運(yùn)算指令和函數(shù)調(diào)用等命令(不帶“;”),MATLAB將迅速顯示出結(jié)果并再次進(jìn)入準(zhǔn)備工作狀態(tài)。(3) 若命令后帶有“;”,MATLAB執(zhí)行命令后不顯示結(jié)果。(4) 在準(zhǔn)備工作狀態(tài)下,如果按上下鍵,MATLAB會按順序依次顯示以前輸入的命令,若要執(zhí)行它,則直接回車即可。工作空間(Workspace):(1) 顯示計算機(jī)內(nèi)存中現(xiàn)有變量的名稱、類型、結(jié)構(gòu)及其占用子節(jié)數(shù)等。(2) 如果直接雙擊某變量,則彈出Array Editor窗口供用戶查看及修改變
3、量內(nèi)容。(3) 該窗口上有工具條支持用戶將某變量存儲到文件中或者從文件中載入某變量。命令歷史記錄(Command History):(1) 保存并顯示用戶在命令窗口中輸入過的命令,以及每次啟動MATLAB的時間等信息。(2) 若雙擊某條命令記錄,則MATLAB會再次執(zhí)行該命令。當(dāng)前路徑窗口(Current Directory):(1) 先是當(dāng)前路徑內(nèi)的所有文件。(2) 用戶可以在這里新建或刪除一個文件,也可以雙擊一個文件,在編輯/調(diào)試窗口中打開。設(shè)置當(dāng)前路徑(Current Directory):(1) 用于選擇當(dāng)前工作路徑。(2) 可以在命令窗口中輸入文件名來直接調(diào)用工作路徑下的文件。使用M
4、ATLAB時獲取幫助的兩種方法:一是直接在命令窗口中輸入help 函數(shù)名或命令;二是在幫助窗口中瀏覽或搜索相應(yīng)信息。還可以參考MATLAB的Demo程序來學(xué)習(xí)MATLAB編程。1.2 基本語法(一)變量及其賦值1、標(biāo)識符與數(shù)(1)標(biāo)識符是標(biāo)識變量名、常量名、函數(shù)名和文件名的字符串的總稱。在MATLAB中,變量和常量的標(biāo)志符最長允許19個字符;函數(shù)和文件名通常不超過8個字符(受操作系統(tǒng)文件管理器的限制)。這些字符包括全部的英文字母(區(qū)分大小寫)、阿拉伯?dāng)?shù)字和下劃線等符號。標(biāo)識符的第一個字符必須是英文字母。(2)MATLAB中只有雙精度一種數(shù)據(jù)格式,它把簡化編程作為主要目標(biāo),以運(yùn)算速度和內(nèi)存消耗為
5、代價,省去了多種數(shù)據(jù)格式,唯一采用雙精度格式進(jìn)行數(shù)據(jù)的存儲和運(yùn)算。雖然它的數(shù)據(jù)格式只有一種,但是為了人機(jī)交互方便,輸出顯示格式有8種。下表顯示了在各格式控制命令下圓周率的顯示結(jié)果。MATLAB命令顯示形式說明format long3.1415926535897916位十進(jìn)制數(shù)format long e3.141592653589793e+00016位十進(jìn)制數(shù)加指數(shù)format short(默認(rèn))3.1416二位整數(shù),四位小數(shù)format short e3.1416e+0005位十進(jìn)制數(shù)加指數(shù)format hex400921fb54442d1816位十六進(jìn)制數(shù)format bank3.14兩位小
6、數(shù)format +正、負(fù)或零format rat355/113分?jǐn)?shù)近似MATLAB默認(rèn)的顯示格式是format loose(稀疏格式),屏幕的顯示會有很多空行,而如果用顯示格式命令format compact(緊湊格式),則會用緊湊格式顯示。2、矩陣及其元素的賦值(1)MATLAB中的變量或常量都代表矩陣,標(biāo)量應(yīng)看作1×1階的矩陣。(2)矩陣的賦值:矩陣的值放在方括號中;一行中各元素之間以逗號或者空格分開,不同的行則以分號隔開;句的結(jié)尾可用回車符或逗號,此時會立即顯示運(yùn)算結(jié)果。如果不希望顯示結(jié)果,就以分號結(jié)尾。此時運(yùn)算仍然執(zhí)行,只是不顯示。變量的元素用圓括號“()”中的數(shù)字(也稱為下
7、標(biāo))來注明,一維矩陣(也稱為數(shù)組或向量)中的元素用一個下標(biāo)表示,二維的矩陣可有兩個下標(biāo)數(shù),以逗號分開。賦值語句一般形式為:變量=表達(dá)式(或數(shù))例如:輸入語句a=1 2 3;4 5 6;7 8 9則顯示結(jié)果為a = 1 2 3 4 5 6 7 8 9 Ø 元素可以用表達(dá)式代替。如輸入x=-1.3 sqrt(3) (1+2+3/5*4)則顯示結(jié)果為x = -1.3000 1.7321 4.8000Ø 可以單獨(dú)給矩陣的元素賦值。如x(2)=1.7321,a(2,3)=6等。如果賦值元素的下標(biāo)超出了原來矩陣的大小,矩陣的行列會自動擴(kuò)展。跳空的元素會被自動賦值為0。如x(5)=abs
8、(x(1)則得x=-1.3000 1.7321 4.800001.3000又如鍵入a(4,3)=6.5,則得a = 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 0 0 6.5000Ø 給全行賦值,可用冒號。如給a的第5行賦值。鍵入a(5,:)=5,4,3得a =1.0000 2.0000 3.00004.0000 5.0000 6.00007.0000 8.0000 9.00000 0 6.50005.0000 4.0000 3.0000Ø 要取出a的第2、4 行及第1、3列交點(diǎn)上的元素取出,
9、構(gòu)成一個新矩陣b。可鍵入b=a(2,4,1,3)得b = 4.0000 6.00000 6.5000Ø 要抽除a中的第2、4、5行,可利用空矩陣(指沒有元素的矩陣,對任何一個矩陣賦值,就是使它的元素都消失,注意它與“零矩陣”不同)。鍵入 a(2,4,5,:)=得a =1 2 37 8 9對于“變量=表達(dá)式(或數(shù))”的賦值形式,如果不要等式左端而只剩下右端,則MATLAB會自動給出一個臨時變量ans,把右端的結(jié)果暫存于ans中。例如鍵入a/7得ans = 0.1429 0.2857 0.42861.0000 1.1429 1.28573、復(fù)數(shù)矩陣、運(yùn)算及其賦值(1)MATLAB的每一個
10、元素都可以是復(fù)數(shù),復(fù)數(shù)的虛數(shù)部分用i或j表示,這是在MATLAB啟動時就在內(nèi)部設(shè)定的。MATLAB中所有的運(yùn)算符和函數(shù)都對復(fù)數(shù)有效。例如:鍵入c=3+5.2i或c=3+5.2j得c = 3.0000 + 5.2000i(2)復(fù)數(shù)矩陣有兩種賦值方法。Ø 對復(fù)數(shù)矩陣的元素逐個賦值。如鍵入z=1+2i,3+4i;5+6i,7+8i得z = 1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000iØ 對其實(shí)部矩陣和虛部矩陣分別賦值。如鍵入z=1,3;5,7+2,4;6,8*i得z = 1.0000 + 2
11、.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i注意:只有數(shù)字與i的乘積可以省略乘號,在上述矩陣式中若省略乘號*,就會出錯。如果在前面程序中曾給i或j賦過其他值,則i或j已不是虛數(shù)符號,那么這些虛數(shù)賦值語句就不對了。此時應(yīng)鍵入clear i, j,即把原賦的i,j清掉,然后再執(zhí)行復(fù)數(shù)賦值語句。(3)復(fù)數(shù)矩陣的轉(zhuǎn)置、共軛運(yùn)算Ø 函數(shù)conj對矩陣的每個元素求共軛,即把各元素的虛部反號。Ø 運(yùn)算符 ' 對矩陣作共軛和轉(zhuǎn)置,即把其行列互換,同時把各元素的虛部反號。Ø 因此,如果只求轉(zhuǎn)置而不要共軛,
12、就把conj和 ' 結(jié)合起來使用。例如鍵入w=z',u=conj(z),v=conj(z)'得w = 1.0000 - 2.0000i 5.0000 - 6.0000i 3.0000 - 4.0000i 7.0000 - 8.0000iu = 1.0000 - 2.0000i 3.0000 - 4.0000i 5.0000 - 6.0000i 7.0000 - 8.0000iv = 1.0000 + 2.0000i 5.0000 + 6.0000i 3.0000 + 4.0000i 7.0000 + 8.0000i4、基本矩陣Ø 單位矩陣eye(n)是n
13、15;n階的方陣,其對角線上的元素為1,其余元素均等于0。Ø 全0矩陣zeros(m,n)是m×n的所有元素均為0的矩陣。Ø 全1矩陣ones(m,n)是m×n的所有元素均為1的矩陣。Ø 均分向量linspace(a,b,n)是在a與b之間均勻地產(chǎn)生n個點(diǎn)值,形成n維向量。如:鍵入f1=ones(3,2),f2=zeros(2,3),f3=eye(2)得f1 = 1 1 1 1 1 1f2 = 0 0 0 0 0 0f3 = 1 0 0 1鍵入f4=linspace(0,1,5)得f4 = 0 0.2500 0.5000 0.7500 1.00
14、00Ø 大矩陣可由小矩陣組成,但必須其行列數(shù)正確,恰好填滿全部元素。如鍵入f5=1 1 1;2 2 2;3 3 3得f5 = 1 1 1 2 2 2 3 3 3則鍵入fb=f1,f5;f3,f2可得fb = 1 1 1 1 1 1 1 2 2 2 1 1 3 3 3 1 0 0 0 0 0 1 0 0 0(二)矩陣的初等運(yùn)算1、矩陣的加減乘法(1)矩陣加減法兩矩陣相加(減)就是其對應(yīng)元素的相加(減),通過+、-運(yùn)算符實(shí)現(xiàn),要求相加(減)的兩個矩陣的結(jié)構(gòu)必須相同。用MATLAB的size語句來檢查結(jié)構(gòu)是否相同。例如:鍵入m,n=size(fb)得m = 5n = 5當(dāng)兩個矩陣相加(減)
15、時,如果有一個是標(biāo)量,則MATLAB承認(rèn)算式有效,并自動將該標(biāo)量擴(kuò)展成同結(jié)構(gòu)的等元素矩陣,再進(jìn)行加(減)運(yùn)算。例如:鍵入x=-1 0 1;y=x-1得y =-2 -1 0對于一維矩陣(數(shù)組),可以用length語句來求其長度,它不區(qū)分列或行,只有一個輸出量,而size有兩個輸出量,所以,作加減法的結(jié)構(gòu)檢驗(yàn)時只能用size。(2)矩陣乘法n×p的矩陣A與p×m的矩陣B的乘積C是一個n×m的矩陣,通過運(yùn)算符*實(shí)現(xiàn)。p是A矩陣的列數(shù),也是B矩陣的行數(shù),稱為這兩個相乘矩陣的內(nèi)階數(shù),這里要注意,兩矩陣相乘的必要條件是它們的內(nèi)階數(shù)相等。如果兩個相乘的矩陣有一個是標(biāo)量,則MAT
16、LAB不檢查其內(nèi)階數(shù),而用該標(biāo)量乘以矩陣的每個元素。若把y轉(zhuǎn)置,即y為3×1的矩陣,而x是1×3的矩陣,則x*y的內(nèi)階數(shù)相等為3鍵入x*y得ans=2該式子稱為x左乘y。如果使x右乘y,則y*x內(nèi)階數(shù)為1,鍵入y*x得ans = 2 0 -2 1 0 -1 0 0 0所以要注意左乘與右乘結(jié)果一般不同,只有單位矩陣?yán)?,單位矩陣乘以任何矩陣,無論左乘還是右乘,其乘積仍等于該矩陣,但要保證單位矩陣的階數(shù)與相乘矩陣的階數(shù)相等。即eye(n)*A=AA*eye(n)=A2、矩陣除法及線性方程組的解(1)線性代數(shù)中沒有除法,只有逆矩陣,矩陣的除法是MATLAB從逆矩陣的概念引伸來的。
17、有左除和右除兩種情況。B左除矩陣D相當(dāng)于矩陣B左乘矩陣D的逆矩陣,記作DB。左除條件是:兩矩陣的行數(shù)必須相等。(D*X=B,X=D-1*B=DB,可見需要D與B的行數(shù)相等)B右除矩陣D相當(dāng)于矩陣B右乘矩陣D的逆矩陣,記作B/D。右除條件是:兩矩陣的列數(shù)必須相等。(X*D=B,X=B*D-1=B/D,可見需要D與B的列數(shù)相等)(2)矩陣除法可以用來方便地解線性方程組。例如要求下列方程組的解x=x1;x2;x3。6 x1+3x2+4 x3=3-2x1+5x2+7x3=-48x1-4x2-3 x3=-7此方程組可以寫成矩陣形式Ax=B,求解的MATLAB程序?yàn)锳=6 3 4;-2 5 7;8 -4
18、-3; B=3;-4;-7; x=AB得x = 0.6000 7.0000 -5.4000下面來看矩陣左右乘除的一些示例。設(shè)A=1 2 3;4 5 6,B=2 4 0;1 3 5,D=1 4 7;8 5 2;3 6 0,即A = 1 2 3 4 5 6B = 2 4 0 1 3 5D = 1 4 7 8 5 2 3 6 0則其乘除的結(jié)果見下表。算 式結(jié) 果A*B? Error using => *Inner matrix dimensions must agree.(內(nèi)階數(shù)必須相等) A*B 6 16 20 9 23 25 12 30 30A*B 10 22 28 49DA? Error
19、 using => Matrix dimensions must agree.(行數(shù)必須相等)DA -0.0370 0 0.5185 1.0000 -0.1481 0A/D 0.4074 0.0741 0.0000 0.7407 0.4074 0.00003、矩陣的乘方和冪次函數(shù)MATLAB中只有運(yùn)算符*、/、和指數(shù)函數(shù)expm、對數(shù)函數(shù)logm、開方函數(shù)sqitm是把矩陣作為一個整體來運(yùn)算的,其他所有的MATLAB函數(shù)都是對矩陣中的元素分別進(jìn)行運(yùn)算的,稱為“元素群運(yùn)算”,將在后面討論。(1)冪次運(yùn)算時,指數(shù)和底數(shù)不能同時為矩陣,或者說指數(shù)和底數(shù)至少一個必須為標(biāo)量;(2)指數(shù)或底數(shù)為矩陣
20、時,必須是方陣,以保證矩陣相乘的內(nèi)階數(shù)相等;(3)注意:sqrtm、expm、logm都是針對矩陣的運(yùn)算,而sqrt、exp、log是針對矩陣元素的群運(yùn)算,不要混淆。下面來看一些矩陣運(yùn)算的示例,其中D=1 4 7;8 5 2;3 6 0,s=1 2;3 4即D = 1 4 7 8 5 2 3 6 0s = 1 2 3 4鍵入語句輸出結(jié)果說明D2 54 66 15 54 69 66 51 42 33按矩陣運(yùn)算2.D 2 16 128 256 32 4 8 64 1按元素群運(yùn)算Ds? Error using => At least one operand must be scalar.底數(shù)和
21、指數(shù)不能同時為矩陣u1=sqrtm(s) 0.5537 + 0.4644i 0.8070 - 0.2124i 1.2104 - 0.3186i 1.7641 + 0.1458i按矩陣運(yùn)算u1*u1=s檢驗(yàn)u2=sqrt(s) 1.0000 1.4142 1.7321 2.0000按元素群運(yùn)算u2*u2s, u2.*u2=sv1=expm(s) 51.9690 74.7366 112.1048 164.0738按矩陣運(yùn)算logm(v1)=sv2=exp(s) 2.7183 7.3891 20.0855 54.5982按元素群運(yùn)算log(v1)=slogm(D) 1.2447 -0.9170 2.
22、8255 1.6044 2.5760 -1.9132 -0.7539 1.1372 1.6724按矩陣運(yùn)算log(D) 0 1.3863 1.9459 2.0794 1.6094 0.6931 1.0986 1.7918 -Inf按元素群運(yùn)算4、矩陣結(jié)構(gòu)形式的提取與變換設(shè)矩陣A=8 1 6 0;3 5 7 1;4 9 2 2即A = 8 1 6 0 3 5 7 1 4 9 2 2函數(shù)名功能語句結(jié)果fliplr矩陣左右翻轉(zhuǎn)B=fliplr(A) 0 6 1 8 1 7 5 3 2 2 9 4flipud矩陣上下翻轉(zhuǎn)B=flipud(A) 4 9 2 2 3 5 7 1 8 1 6 0reshap
23、e階數(shù)重組(元素總數(shù)不變)B=reshape(A,2,6) 8 4 5 6 2 1 3 1 9 7 0 2tril取矩陣的左下三角部分B=tril(A) 8 0 0 0 3 5 0 0 4 9 2 0triu取矩陣的右上三角部分B=triu(A) 8 1 6 0 0 5 7 1 0 0 2 2:將元素按列取出排成一排B=A(:)B =8 3 4 1 5 9 6 7 2 0 1 2(三)元素群運(yùn)算1、數(shù)組及其賦值數(shù)組通常是指單行或單列的矩陣。MATLAB提供兩種為等間隔數(shù)組賦值的簡易方法。(1)用兩個冒號組成等增量語句,其格式為:t=初值:增量:終值或者t=初值:增量:終值。如:鍵入t=0:0.
24、02:1或t=0:0.02:1得t = 0 0.2000 0.4000 0.6000 0.8000 1.0000鍵入t=10:-3:-5或t=10:-3:-5得t = 10 7 4 1 -2 -5當(dāng)增量為1時,該增量可以略去不寫,變成t=初值:終值或t=初值:終值。如鍵入t=1:6或者t=1:6t = 1 2 3 4 5 6(2)用linspace函數(shù)。調(diào)用格式為:linspace(初值,終值,點(diǎn)數(shù))。如:鍵入linspace(1 10 10)得ans = 1 2 3 4 5 6 7 8 9 10即將1到10之間等分為10個點(diǎn),或者說等分為9份。2、元素群的四則運(yùn)算和冪次運(yùn)算元素群運(yùn)算也就是矩
25、陣中所有元素按照單個元素進(jìn)行運(yùn)算。在運(yùn)算符*、/、前加上一個點(diǎn)符號“.”,就表示做元素群運(yùn)算。參與元素群運(yùn)算的兩個矩陣必須是同階的(只有標(biāo)量除外,它會自動擴(kuò)展為同階矩陣參與運(yùn)算)。設(shè)X=1,2,3;Y=4,5,6運(yùn) 算 式輸 出 結(jié) 果Z=X.*YZ = 4 10 18Z=X.YZ = 4.0000 2.5000 2.0000Z=X.YZ = 1 32 729Z=X.2Z = 1 4 9Z=2.X YZ = 2 4 8 16 32 64(四)運(yùn)算符MATLAB中的數(shù)學(xué)運(yùn)算符名 稱說 明名 稱說 明+ -矩陣加,矩陣減*矩陣乘/ 矩陣右除,矩陣左除矩陣求冪.* .群乘,群求冪./ .數(shù)組右除,數(shù)
26、組左除' . '共軛轉(zhuǎn)置,轉(zhuǎn)置=賦值MATLAB中的比較和邏輯運(yùn)算符名 稱說 明名 稱說 明=等于=不等于> >=大于,大于等于< <=小于,小于等于&與|或非xor(a,b)a和b異或any(a)a中有元素非零則為真all(a)a中所有元素都非零則為真1.3 M文件及程序調(diào)試主程序文件(script file)(主程序):用戶為解決特定問題而編制函數(shù)文件(function file)(子程序):必須由其他M文件調(diào)用;往往具有一定的通用性M文件由MATLAB語句構(gòu)成的文本文件,以m作為文件擴(kuò)展名;是ASCII碼文本文件,可以直接閱讀并用任何編輯器
27、來建立。行命令模式:鍵入一行命令后,讓系統(tǒng)立即執(zhí)行該命令。缺點(diǎn):程序可讀性差,難以存儲。運(yùn)行模式程序文件模式:可存儲,尤其適于復(fù)雜問題一、主程序文件1、格式及要求(1)程序開頭Ø 最開始一般是注釋行,說明程序用途、對輸入數(shù)據(jù)的要求等。注釋行必須以%開始,表明是注釋行而不是命令行,計算機(jī)不會處理以%開頭的任何內(nèi)容。當(dāng)然,在命令行后也可以%引導(dǎo)注釋語句;注釋可以用漢字。MATLAB規(guī)定,在鍵入“help 文件名”時,屏幕上會將該文件中以%起頭的最前面幾行的內(nèi)容顯示出來,使用戶知道如何使用。Ø 程序命令部分以clear、close all等語句開始,用來清除掉工作空間中原有的變量
28、和圖形,避免其他已執(zhí)行的程序殘留數(shù)據(jù)對本程序的影響。CLEAR removes all variables from the workspace.CLOSE ALL closes all the open figure windows.(2)程序主體Ø 如果文件中有在子程序中與主程序共用的全局變量,應(yīng)在程序的起始部分注明。其語句是:global變量名1變量名2Ø 為改善可讀性,應(yīng)注意流程控制語句的縮進(jìn)及與end的對應(yīng)關(guān)系。Ø 程序中必須都用半角英文字母和符號(只有引號括住的部分和%號后的內(nèi)容可用漢字),否則程序執(zhí)行不通甚至?xí)罊C(jī),因此一般在鍵入程序時,最好從頭到尾
29、用英文,在程序調(diào)試完畢后再插入漢字。(3)文件名及文件存儲Ø 按照MATLAB標(biāo)志符要求起文件名,并加上后綴m。Ø 文件名即為MATLAB的調(diào)用命令。Ø 文件名中不允許用漢字。Ø 存儲目錄應(yīng)位于MATLAB的搜索路徑下。Ø MATLAB的搜索路徑不應(yīng)出現(xiàn)漢字路徑名。(4)程序執(zhí)行完成主程序文件編制后,在MATLAB的命令窗中鍵入此程序的文件名后,系統(tǒng)就會執(zhí)行文件中的程序,主程序文件中的語句將對工作空間中的所有數(shù)據(jù)進(jìn)行運(yùn)算操作。2、示例列出求素數(shù)的程序。素數(shù)即為只能被它自身和1除凈的數(shù)。程序如下:%求素數(shù)(prime number)的程序clea
30、r,close all%清除工作空間中原有的變量和圖形N=input(N=),x=2:N;%列出從2到N的全部自然數(shù)for u=2:sqrt(N)%依次列出除數(shù)(最大到N的平方根)n=find(rem(x,u)=0 & x=u);%找到能被u除凈而u不等于x的數(shù)的序號x(n)=;%剔除該數(shù)end,x%循環(huán)結(jié)束,顯示結(jié)果以prime.m為名存入系統(tǒng)即可執(zhí)行。給出N=40,結(jié)果為x=2 3 5 7 11 13 17 19 23 29 31 373、常用的人機(jī)交互命令在執(zhí)行主程序文件時,往往希望在適當(dāng)?shù)牡胤綄Τ绦虻倪\(yùn)行進(jìn)行觀察或者干預(yù)(尤其在調(diào)試程序的時候),這時就需要人機(jī)交互命令。介紹常用
31、的下面幾條:(1)input('提示符)程序執(zhí)行到此處暫停,在屏幕上顯示引號中的字符串。要求用戶輸入數(shù)據(jù)。如程序?yàn)閄=input(X=),則會在屏幕上顯示X=,輸入的數(shù)據(jù)將賦給X。數(shù)據(jù)輸入后,程序繼續(xù)運(yùn)行。Input命令也可以接受字符,其格式為Y=input(提示符,s),此時Y將等于輸入的字符串。(2)pause(n)程序執(zhí)行到此處,暫停n秒,再繼續(xù)執(zhí)行。如果沒有括號參數(shù),則等待用戶鍵入任意鍵后才繼續(xù)執(zhí)行。(3)echo on(off)一般情況下,M文件中的命令不會顯示在屏幕上。而在命令echo on之后,會在執(zhí)行每行程序前先顯示其內(nèi)容。(4)keyboard程序執(zhí)行到此處暫停,在屏
32、幕上顯示字符K,并把程序的輸入和執(zhí)行權(quán)交給用戶(鍵盤)。用戶可以像在普通MATLAB命令窗口中那樣進(jìn)行任何操作(例如,檢查中間結(jié)果等)。如果需要系統(tǒng)恢復(fù)運(yùn)行原來的程序,只需要鍵入return。在M文件中設(shè)置該命令,有利于進(jìn)行程序調(diào)試以及臨時修改變量內(nèi)容。(5)Ctrl+C強(qiáng)行終止程序的運(yùn)行。當(dāng)程序有錯運(yùn)行時間太長時,可用此方法終止。二、函數(shù)文件1、格式特征(1)由function起頭;(2)function后跟函數(shù)名,且必須與文件名相同;(3)可以有輸入輸出變量進(jìn)行變量傳遞;(4)除非用global聲明,程序中的變量均為局部變量,不保存在工作空間中。(5)在鍵入“help 文件名”時,屏幕上顯
33、示的內(nèi)容是位于function語句后對文件的注釋部分(而help 主程序文件時顯示的內(nèi)容是文件罪開頭的注釋語句)。2、示例設(shè)已有函數(shù)文件mean.m鍵入 type mean得到function y=mean(x)%MEAN求平均值。對于向量,mean(x)返回該向量x中各元素的平均值%對于矩陣,mean(x)是一個包含各列元素平均值的行向量m,n=size(x);if m=1 M=n;end%處理單行向量y=sum(x)/m分析:文件的第一條語句定義了函數(shù)名、輸入變量x以及輸出變量y。如果沒有這條語句,該文件就成為程序文件,而不再是函數(shù)文件。輸入變量和輸出變量都可以由若干個,但必須在第一條語句
34、中明確列出。function語句后由%引導(dǎo)的注釋部分,會在help mean命令后顯示于命令窗口中。變量m,n,y都是函數(shù)mean的局部變量,當(dāng)mean.m文件執(zhí)行完畢,這些變量值會自動消失,不保存在工作空間中。如果在該文件執(zhí)行前,工作空間中已經(jīng)有同名的變量,系統(tǒng)會把兩者看作各自無關(guān)的變量,不會混淆。這樣,調(diào)用子程序時就不用考慮其中的變量與程序變量沖突的問題了。如果希望把兩者看成同一變量,則必須在主程序和子程序中都加入global語句,對此共同變量進(jìn)行聲明。在給輸入變量x賦值時,應(yīng)把x代換成主程序中的已知變量。三、文件編輯器及程序調(diào)試MATLAB提供的編輯器把編輯與調(diào)試結(jié)合在一起。一般來說,主
35、程序比較好調(diào)試,因?yàn)镸ATLAB差錯能力很強(qiáng),配合工作空間中變量的保存和顯示功能,不需要專門的調(diào)試命令,調(diào)試也可以很方便地進(jìn)行。需要用調(diào)試命令的主要是函數(shù)程序,因?yàn)樵诤瘮?shù)程序出錯而停機(jī)時,其變量不被保存。雖然它也會指出出錯的語句,但是因?yàn)樽映绦蛑械淖兞吭诔绦驁?zhí)行完畢后會自動消失,其他現(xiàn)場數(shù)據(jù)都無記錄,會給調(diào)試帶來很大困難。解決此問題可以采用下列措施:Ø 把某些分號改為逗號,使中間結(jié)果能夠顯示在屏幕上,作為差錯的依據(jù)。Ø 在子程序中適當(dāng)部位加keyboard命令。此處,系統(tǒng)會暫停而等待用戶鍵入命令。這時,子程序中的變量還存在于工作空間中,可以對它們進(jìn)行檢查。Ø 將函
36、數(shù)文件的第一行前加%號,使它成為程序文件,進(jìn)行初步調(diào)試。第一行中的輸入變量可改為input或者賦值語句來輸入,調(diào)試好后再改回函數(shù)文件。Ø MATLAB共有11條調(diào)試命令,如dbstop設(shè)置斷點(diǎn),dbclear清除斷點(diǎn)等。一般來說,當(dāng)程序不太長時,用調(diào)試命令反而麻煩。實(shí)驗(yàn)名稱: 利用MATLAB模擬點(diǎn)電荷電勢的分布一、 實(shí)驗(yàn)?zāi)康?.熟悉單個點(diǎn)電荷及一對點(diǎn)電荷的電勢分布情況;2.學(xué)會使用MATLAB進(jìn)行數(shù)值計算,并繪出相應(yīng)的圖形;二、實(shí)驗(yàn)原理根據(jù)庫侖定律:在真空中,兩個靜止點(diǎn)電荷之間的作用力與這兩個電荷的電量乘積成正比,與它們之間距離的平方成反比,作用力的方向在兩個電荷的連線上,兩電荷同
37、號為斥力,異號為吸引力,它們之間的力滿足: (式1)由電場強(qiáng)度的定義可知: (式2)對于點(diǎn)電荷,根據(jù)場論基礎(chǔ)中的定義,有勢場的勢函數(shù)為 (式3)在MATLAB中,由以上公式算出各點(diǎn)的電勢,可以用MATLAB自帶的庫函數(shù)繪出相應(yīng)的電勢分布情況。三、MATLAB基本語法 (一)標(biāo)識符與數(shù)標(biāo)識符是標(biāo)志變量名、常量名、函數(shù)名和文件名的字符串的總稱。(二)矩陣及其元素的賦值賦值就是把數(shù)賦予代表常量或變量的標(biāo)識符。MATLAB中的變量或常量都代表矩陣,標(biāo)量應(yīng)看作1×1價的矩陣。賦值語句的一般形式為變量=表達(dá)式(或數(shù))列如,輸入語句a=1 2 3;4 5 6;7 8 9則顯示結(jié)果為a=1 2 3
38、4 5 6 7 8 9輸入 x=1 2 3 4 5 6 7 8 9結(jié)果為x= 1 2 3 4 5 6 7 8 9可以看出,矩陣的值放在方括號中,同一行中各元素之間以逗號或空格分開,不同行的元素以分號隔開。語句的結(jié)尾可用回車或逗號“,”,此時會立即顯示運(yùn)算結(jié)果;如果不希望顯示結(jié)果,就以分號“;”結(jié)尾再回車,此時運(yùn)算仍然執(zhí)行,只是不作顯示。變量的元素用圓括號“()”中的數(shù)字(也稱為下標(biāo))來注明,一維矩陣(也稱數(shù)組)中的元素用一個下標(biāo)表示,二維矩陣可有兩個下標(biāo)數(shù),以逗號分開。在MATLAB中可以單獨(dú)給元素賦值,例如,a(2,3)=6,x(2)=2等。(三)元素群運(yùn)算把n×m矩陣中的每個元素
39、當(dāng)作對象,成群地執(zhí)行某種運(yùn)算,稱為元素群運(yùn)算。元素群運(yùn)算能大大簡化編程,提高運(yùn)算的效率,這是MATLAB優(yōu)于其它許多語言的一個特色。1、數(shù)組及其賦值數(shù)組通常是指單行或單列的矩陣,一個N階數(shù)組就是1×N或N×1階矩陣。N階數(shù)組可以表示N維向量。在求某些函數(shù)值或曲線時,常常要設(shè)定自變量的一系列值,例如,設(shè)間隔n在x軸上從-3到3之間,每隔1取一個點(diǎn),共7個點(diǎn),這是1×7階的數(shù)組。如果逐點(diǎn)給它賦值,將非常麻煩。MATLAB提供了兩種給等間隔數(shù)組賦值的簡易方法。(1)用兩個冒號組成等增量語句,其格式為x=初值:增量:終值。例如,鍵入x=-3:1:3得x=-3 -2 -1
40、0 1 2 3 當(dāng)然增量為1時,這個增量值是可以略去的。(2)linspace函數(shù)表述等距離分割,其格式為x=linspace(初值,終值,點(diǎn)數(shù))。例如鍵入x=linspace(-3,3,7)得x=-3 -2 -1 0 1 2 3 在x軸上-3和3實(shí)際上是一個點(diǎn),所以這個命令是把x軸分為7份。第三個變元也可以不寫,此時取默認(rèn)值100.2、元素群的四則運(yùn)算和冪次運(yùn)算元素群運(yùn)算也就是單個元素之間的運(yùn)算。為了與矩陣作為整體的運(yùn)算符號相區(qū)別,要在運(yùn)算符“*”、“/”、“”、“”前加一個點(diǎn)符號“.”,以表示進(jìn)行元素群運(yùn)算。矩陣的加減法本來就是對元素進(jìn)行的,故不再有元素群運(yùn)算符。參與元素群運(yùn)算的兩個矩陣必
41、須是同價的(標(biāo)量除外)。下列的例子可以說明利用元素群運(yùn)算的優(yōu)越性。例如,要求列出一個三角函數(shù)表。這在MATLAB中只要一下兩個語句鍵入 x=0:0.1:pi/4;x, sin(x), cos(x), tan(x)第一條語句把數(shù)組x賦值,經(jīng)轉(zhuǎn)置后成為一個列向量。因?yàn)閟in, cos,tan函數(shù)都對元素群有效,得出的都是同階的列向量。第二條語句把4個列向量組成一個矩陣,進(jìn)行顯示。得 0 0 1.0000 0 0.1000 0.0998 0.9950 0.1003 0.2000 0.1987 0.9801 0.2027 0.3000 0.2955 0.9553 0.3093 0.4000 0.389
42、4 0.9211 0.4228 0.5000 0.4794 0.8776 0.5463 0.6000 0.5646 0.8253 0.6841 0.7000 0.6442 0.7648 0.8432第一列是x,以下各列依次是sin(x), cos(x), tan(x)。for語句for語句的結(jié)構(gòu)形式為for k=初值:增量:終值 語句組A,end即它把語句組A反復(fù)執(zhí)行N次。在每次執(zhí)行時程序中k值不同??梢运愠鲅h(huán)次數(shù)為N=1+(終值初值)/增量用for 語句求三角函數(shù)表的程序?yàn)閒or x=0:0.1:pi/4disp(x, sin(x), cos(x), tan(x);end所得結(jié)果將和上個例
43、題中的答案相同??梢钥闯觯琈ATLAB的元素群運(yùn)算功能與一個for循環(huán)相當(dāng),由于它不需要每次檢驗(yàn)表達(dá)式,運(yùn)算速度比for語句快得多。for 語句可以嵌套使用。四、MATLAB現(xiàn)用函數(shù)介紹MATLAB語言的難點(diǎn)是函數(shù)較多,僅基本部分就有700多個,其中常用的近200個,要盡量多記少查,以提高編程效率,而且這是終生受益的。1、線型分隔函數(shù)linspace(-xm,xm,n):在-xm與xm之間均分地產(chǎn)生n個點(diǎn)值,形成1×n元向量。其中-xm是初值,xm是終值,n是點(diǎn)數(shù)。2、兩個變量的標(biāo)量指令 X,Y=meshgrid(x,y):將向量x,y變換為數(shù)組X,Y,這樣就可以將兩個一維向量生成兩
44、個二維矩陣。其中,數(shù)組X的各行是向量x的拷貝,總行數(shù)為y向量的元素個數(shù);數(shù)組Y的各列是向量y的拷貝,總列數(shù)為x向量的元素個數(shù)。例如x=-3:3; y=1:5; X,Y=meshgrid(x,y) X=-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 Y= 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5Z=(X+Y).2 Z= 4 1 0 1 4 9 16 1 0 1 4 9 16 25
45、 0 1 4 9 16 25 36 1 4 9 16 25 36 49 4 9 16 25 36 49 643、二維空間中繪制等高線函數(shù) contour(X,Y,U,u):就是挑選出電勢相等的點(diǎn),并在向量u指定的值上繪制等高線。注意u取值要恰當(dāng)。四、實(shí)驗(yàn)編程1.畫單個點(diǎn)電荷的平面電場線與等勢線clear %清除變量E0=8.85e-12; %真空電介質(zhì)常數(shù)C0=1/4/pi/E0; %歸并常數(shù)q=1.6*10(-19); %元電荷電量xm=2.5; %橫坐標(biāo)范圍ym=4; %縱坐標(biāo)范圍x=linspace(-xm,xm); %橫坐標(biāo)向量y=linspace(-ym,ym); %縱坐標(biāo)向量X,Y=meshgrid(x,y); %設(shè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 互聯(lián)網(wǎng)行業(yè)安全保護(hù)建議
- 2024年社會健康大班教案
- 財務(wù)部全年工作概述
- 《肺栓塞診治新進(jìn)展》課件
- 化妝師為客戶化妝設(shè)計妝容
- 兒童教育行業(yè)教育啟蒙培訓(xùn)心得
- 防務(wù)行業(yè)戰(zhàn)術(shù)訓(xùn)練培訓(xùn)總結(jié)
- 2024年稅務(wù)師題庫及完整答案
- 2024年計算機(jī)網(wǎng)絡(luò)個人簡歷
- 2024年甘孜職業(yè)學(xué)院單招職業(yè)技能測試題庫有答案
- 2025年安徽交控集團(tuán)招聘筆試參考題庫含答案解析
- 促進(jìn)臨床合理用藥持續(xù)改進(jìn)措施
- 精神科護(hù)理崗位競聘
- 廣西北海市2023-2024學(xué)年八年級(上)期末數(shù)學(xué)試卷
- 非急救轉(zhuǎn)運(yùn)合同范例
- 車輛使用安全培訓(xùn)
- 肺結(jié)核的護(hù)理個案
- AutoCAD2024簡明教程資料
- 《中國傳統(tǒng)文化》課件模板(六套)
- 民航客艙服務(wù)管理Ⅱ?qū)W習(xí)通超星期末考試答案章節(jié)答案2024年
- 兒科主任年終總結(jié)
評論
0/150
提交評論