matlab與數(shù)值分析課件:matlab繪圖與編程(3)_第1頁
matlab與數(shù)值分析課件:matlab繪圖與編程(3)_第2頁
matlab與數(shù)值分析課件:matlab繪圖與編程(3)_第3頁
matlab與數(shù)值分析課件:matlab繪圖與編程(3)_第4頁
matlab與數(shù)值分析課件:matlab繪圖與編程(3)_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MATLAB繪圖與程序設計基本知識,一 繪圖,二維和三維基本繪圖命令,Matlab圖形窗口,Matlab有用于圖形輸出的專用窗口,稱為圖形窗口。所有的繪圖命令將把圖象輸出到當前窗口,若在命令執(zhí)行前,當前窗口已經(jīng)存在圖形,則原圖形將被新圖象覆蓋掉。,二維平面圖形的繪制,plot 最基本的二維圖形指令,plot的功能: plot命令自動打開一個圖形窗口Figure 用直線連接相鄰兩數(shù)據(jù)點來繪制圖形 根據(jù)圖形坐標大小自動縮擴坐標軸,將數(shù)據(jù)標尺及單位標注自動加到兩個坐標軸上,可自定坐標軸,可把x, y 軸用對數(shù)坐標表示,線性坐標曲線 plot plot(y): 參數(shù)y為向量,以y的值為縱坐標,y的下標

2、為橫坐標。,例1:x=0, 0.48,0.84,1,0.91,0.6,0.14 plot (x),plot(x,y) :參數(shù)x,y為向量,以x為橫坐標,以y為縱坐標。 注意:x,y的長度必須相等 例:t=0:0.001:2*pi; y=cos(t); plot(t,y),plot(Y)參數(shù)Y為mn的矩陣。該命令把矩陣Y轉(zhuǎn)化為長度為m的n個向量,然后對n個向量劃出n條線。 例:y=5 4 4 8 9 10; 3 4 4 5 8 2; 8 5 7 9 6 25; 9 8 8 9 6 7 plot(y),復向量式 plot(Z):當z為一個復向量時,該命令等價于plot(real(Y),imag(Y

3、);其它情況忽略z的虛部。 例:t=0:0.1:3*pi; x=t+i*cos(t); plot(x); figure; plot(t,x),綜合調(diào)用方式plot(x1,y1,x2,y2,)該命令可以在同一窗口繪制多條曲線。 例: t=0:0.1:3*pi; x=t+i*cos(t); plot(real(x),imag(x),t,x),三維繪圖可分為三個過程: 生成平面網(wǎng)格點 生成和繪制三維網(wǎng)格點 處理三維表面。,三維曲面繪圖,生成平面網(wǎng)格點 X,Y=meshgrid(x,y) x 是區(qū)間x0,xm上劃分點組成的向量; y 是區(qū)間y0,yn上劃分點組成的向量; X,Y是輸出變量矩陣,矩陣X的

4、行向量都是x,矩陣y的列向量都是y。 例: X,Y=meshgrid(-2:2:2,-2:1:2),生成三維網(wǎng)格點 mesh(x,y,z,c): x,y,z,c是同維矩陣 x,y,z對應確定空間上的網(wǎng)格點 c為顏色矩陣; 例:X,Y=meshgrid(-2:.2:2,-2:.2:2);Z=X.*exp(-X.2-Y.2); mesh(Z),三維表面處理 對網(wǎng)格曲面的網(wǎng)格塊區(qū)域著色就得到實曲面。mesh命令僅對網(wǎng)格線著色,而對網(wǎng)格片著色使用surf命令。surf的使用方式與mesh相同。 例:X,Y=meshgrid(-2:.2:2,-2:.2:2); Z=X.*exp(-X.2-Y.2); s

5、urf(Z);,函數(shù)contour繪制二維等高線。用戶可以指定等高線的條數(shù)、坐標系的比例及某值上的等高線,兩者用法相同.,等高線的繪制,shading faceted 網(wǎng)格修飾,缺省方式,shading flat 去掉黑色線條,根據(jù)小方塊的值確定顏色,shading interp 顏色整體改變,根據(jù) 小方塊四角的值差補過度點的值確定顏色,peaks(30);shading interp;colormap(hot),X,Y,Z=peaks(30);surfl(X,Y,Z)shading interp;colormap(cool);axis off,透視與消隱 p=peaks(30);mesh(p

6、);hidden on,作業(yè):,繪出二元函數(shù) 的三維圖形。并根據(jù)你的興趣,對圖形做出適當?shù)男揎棥?M文件類型 命令文件(腳本文件script-file) 函數(shù)文件(function-file),二 編程,命令文件格式 注解運行命令 將matlab命令構(gòu)成的程序存儲成以m為擴展名的文件,然后再執(zhí)行該程序文件,這種工作模式稱為命令文件模式。 程序文件不能在指令窗口下建立,因為指令窗口只允許一次執(zhí)行一行上的一個或幾個語句。,例: % 畫出花瓣 theta=-pi:0.01:pi; rho(1,:)=2*sin(5* theta).2; polar(theta,rho(1,:) %極坐標繪圖,函數(shù)定義

7、行 文件的第一行,定義函數(shù)名,輸入輸出參數(shù)的數(shù)量和名稱。 H1行 幫助信息的第一行,緊跟定義行之后。 函數(shù)說明 H1行以后,函數(shù)主體以前的幫助信息。 函數(shù)主體 函數(shù)中進行真正計算和輸出賦值等工作的代碼。 注釋 函數(shù)體中用引導的對程序的注釋。,函數(shù)文件格式 函數(shù)文件的一般結(jié)構(gòu):,例: function k=rank(x) %RANKNumber of linearly independent rows or columns. %K = RANK(X) is the number of singular values of X %that are larger than MAX(SIZE(X) *

8、 NORM(X) * EPS. %K = RANK(X,tol) is the number of singular values of X that %are larger than tol. %Copyright (c) 1984-94 by The MathWorks, Inc. s = svd(x); if (nargin = 1) tol = max(size(x) * max(s) * eps; end r = sum(s tol);,程序部分,M文件的編輯環(huán)境 Matlab自身提供的M文件編輯器; 一般的文字編輯器,如寫字板、記事本和Word等,保存為文本文件,后綴為.m。,注:

9、 運行m文件之前,必須將文件放在MATLAB的搜索路徑上,盡量使函數(shù)定義名與函數(shù)文件名一致。 兩者不一致時,MATLAB將忽略函數(shù)定義行的函數(shù)定義名,而以保存文件名為準。 H1行做好用英文表達,利于關(guān)鍵字查詢。,MATLAB的搜索過程:,例:假設MATLAB執(zhí)行指令cow 1.檢查cow是否是變量名。 2.是否是內(nèi)建函數(shù)(Built_in Function)。 3.是否是cow所在M文件的一個子函數(shù)。 4.是否是cow所在M文件的一個私有函數(shù)。 5.是否是當前目錄上的文件。 6.搜索路徑上是否有cow存在。,MATLAB 的變量與表達式,MATLAB的變量與類型 變量命名規(guī)則 變量名和函數(shù)名對

10、字母的大小寫敏感; 變量名的第一個字符必須是一個英文字母,最多可包括31個字符; 變量名可由英文字母、數(shù)字和下劃線混合組成; 變量名中不得包含空格和標點,但可以由下連字符,局部變量:具有函數(shù)內(nèi)部作用范圍 全局變量:可在幾個函數(shù)和基本工作空間之間共享,具有全局作用范圍 全局變量的聲明: global 變量名1 變量名2 變量名間用空格分離。 全局變量在使用前必須在MATLAB工作空間中申明,而在某個具體的MATLAB函數(shù)中如果想用到該全局變量時,也必須在函數(shù)中申明。 由于全局變量損害函數(shù)的封閉性,因此不提倡使用全局變量。,局部變量和全局變量,永久變量 又稱預定義變量(Predefined Var

11、iable) ans; eps; realmax; realmin; pi; i,j; inf; NaN; compter; flops; version; 注:盡可能不對永久變量重新賦值,以免產(chǎn)生混淆,MATLAB基本表達式 表達式 變量=表達式 MATLAB書寫表達式的規(guī)則與“手寫算式”幾乎相同。,例: 20.3+3.9*sin(x); y=sin(x)+cos(x); x, y ,z=peaks,字符串數(shù)組、單元數(shù)組和結(jié)構(gòu)數(shù)組,數(shù)據(jù)類型:,最常用的數(shù)據(jù)類型只有雙精度型和字符型,其他數(shù)據(jù)類型只在一些特殊條件下使用,MATLAB 程序結(jié)構(gòu),順序結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 分支結(jié)構(gòu),順序結(jié)構(gòu) 順序結(jié)構(gòu)就是

12、依照順序執(zhí)行程序的各條語句。語句在程序文件中的位置反映了程序的執(zhí)行順序。,循環(huán)結(jié)構(gòu) for-end循環(huán) 語法為: for x =array 可執(zhí)行語句 end,循環(huán)執(zhí)行的次數(shù)為固定的。 循環(huán)次數(shù)由數(shù)組(array)的列數(shù)決定。 例: for ii=1:10; x(ii)=ii; end; x = 1 2 3 4 5 6 7 8 9 10,說明: for循環(huán)不會因為在循環(huán)體內(nèi)對循環(huán)變量重新賦值而終止; for循環(huán)結(jié)構(gòu)可按需要嵌套使用。 技巧: 為得到高效代碼,盡量提高代碼的向量化程度,避免使用循環(huán)結(jié)構(gòu); 為得到最快的運算速度,在循環(huán)指令前盡量對數(shù)組進行預定義,例:利用for循環(huán)求1!+2!+3!

13、+ +5!的值 sum=0; for i=1:5 pdr=1; for k=1:i pdr=pdr*k; end sum=sum+pdr; end,sum = 153,while-end循環(huán) while循環(huán)將循環(huán)體中的語句循環(huán)執(zhí)行不定次數(shù)。 語法為: while 表達式 循環(huán)體語句 end,表達式一般是由邏輯運算和關(guān)系運算以及一般運算組成的,以判斷循環(huán)的進行和停止; 只要表達式的值 非0,繼續(xù)循環(huán);直到表達式值為0,循環(huán)停止。,例:用while循環(huán)求1100間整數(shù)的和 sum=0; i=1; while i=100 sum=sum+i; i=i+1; end sum sum = 5050,分支

14、結(jié)構(gòu) if-else-end分支結(jié)構(gòu),if else end語句有3種形式 if 表達式 執(zhí)行語句 end if 表達式 是 語句1 else 否 語句2 end, if 表達式1 語句1 elseif 表達式2 語句2 elseif 表達式3 語句3 else 語句n end,這種結(jié)構(gòu)實現(xiàn)了一種多路選擇,比較復雜。可替代一般高級語言中的switch-case-end語句,例:編寫m函數(shù),計算函數(shù)值并繪圖,x=-3:0.1:3; if x=1 y=2*x.2; plot(x,y) elseif -1x1 y=0; plot(x,y) else y=-x.3; plot(x,y) end 對嗎?

15、,正確方法 x1=-3:0.1:-1; y1=-x1.3; x2=-1:0.1:1; y2=x2.*0; x3=1:0.1:3; y3=2.*x3.2; x=x1,x2,x3; y=y1,y2,y3; plot(x,y),switch-case-end分支結(jié)構(gòu) switch 開關(guān)表達式 case 表達式1 語句段1 case表達式2 語句段2 . otherwise 語句段n end,說明: 將開關(guān)表達式依次與case后面的表達式進行比較,如果表達式1不滿足,則與下一個表達式2比較,如果都不滿足則執(zhí)行otherwise后面的語句段n;一旦開關(guān)表達式與某個表達式相等,則執(zhí)行其后面的語句段。 開關(guān)

16、表達式只能是標量或字符串。 case后面的表達式可以是標量、字符串或單元數(shù)組,如果是單元數(shù)組則將開關(guān)表達式與單元數(shù)組的所有元素進行比較,只要某個元素與開關(guān)表達式相等,就執(zhí)行其后的語句段。,例:,method = Bilinear; switch lower(method) %將字符串轉(zhuǎn)換為小寫 case linear,bilinear disp(Method is linear) %顯示 case cubic disp(Method is cubic) case nearest disp(Method is nearest) otherwise disp(Unknown method.) en

17、d,M文件調(diào)試的主要功能 編輯/調(diào)試器界面,編輯/調(diào)試器的調(diào)試功能 語法錯誤:變量名、函數(shù)名的誤寫及標點符號的缺、漏。 運行錯誤:由算法本身引起 對語法錯誤,MATLAB在運行時可立即發(fā)現(xiàn),終止運行,給出相應的錯誤原因及所在行號。,調(diào)試方法: 直接調(diào)試法(使用命令行調(diào)試) 圖形調(diào)試法,例 %計算輸入?yún)?shù)的方差的無偏估計 function y=variance(x) mu=sum(x)/length(x); tot=sqsum(x,mu); y=tot/(length(x)-1); function tot=sqsum(x,mu) tot=0; for i=1:length(mu) tot=tot+(x(i)-mu).2); end,程序優(yōu)化,1循環(huán)的向量化。 例: 一般循環(huán)編程。 x=1; for k=1:10000 y(k)=log10(x); x=x+0.01; end % 向量化編程。 x=1:0.01:100; y=log10(x);,2 數(shù)組的預定維: 例:%矩陣未預定義維編程 clear; tic for i=1:5 for j=1:1

溫馨提示

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

評論

0/150

提交評論