




已閱讀5頁,還剩51頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
系立項建設實驗指導書MATLAB程序設計與應用實驗主 編:王 春、段守付物理與電子信息工程系目 錄前 言1實驗一 熟悉MATLAB 環境2實驗二 數值數組創建、應用及可視化6實驗三 字符串數組的使用、簡單腳本文件和函數的編寫10實驗四 數據可視化方法17實驗五 簡單數據分析23實驗六 MATLAB 仿真初步27實驗七 電路模型仿真應用30實驗八 簡單圖形用戶界面設計32附錄:MATLAB 主要函數指令表(按字母順序索引)35前 言美國MathWorks公司推出的MATLAB是一種集數值計算、符號、運算、可視化建模、仿真和圖形處理等多種功能于一體的優秀編程、仿真工具,被譽為“巨人肩膀上的工具”、“演算紙式的編程語言”,是從事科學研究、工程計算的廣大科技工作者、理工類高校師生確認為必須掌握的計算工具,是從理論通向實際的橋梁,也是最可信賴的科技資源之一。為了配合學生上機實踐,更好掌握MATLAB 的基本使用技能,了解MATLAB 的編程風格,以及將所學課程與MATLAB 實踐相結合,特別編寫了本實驗講義。其主要內容包括:MATLAB 入門及基本操作,數組、矩陣的使用及數據可視化方法,腳步文件及函數的編寫,以及仿真、圖形用戶界面入門等。MATLAB 內容豐富,內嵌了許多功能函數。為了方便課堂教學使用,也顧及查閱功能,在書后的索引中按照字母順序對常見MATLAB 函數進行了分類,以備讀者查閱需要。本書編寫由王春、段守付完成。由于編者水平有限,書中難免存在不妥之處,懇請廣大讀者指正。同時,我們也會在適當時間進行修訂和補充。實驗一 熟悉MATLAB 環境實驗目的1熟悉MATLAB 主界面,并學會簡單的菜單操作。2學會簡單的矩陣輸入與信號輸入。3掌握部分繪圖函數。實驗原理MATLAB 是以復雜矩陣作為基本編程單元的一種程序設計語言。它提供了各種矩陣的運算與操作,并有較強的繪圖功能。用戶第一次使用MATLAB 時,建議首先在屏幕上鍵入demo 命令,它將啟動MATLAB 的演試程序,用戶可在此演示程序中領略MATLAB 所提供的強大的運算與繪圖功能。也可以鍵入help 進行進一步了解。MATLAB 啟動界面如圖所示:操作界面主要的介紹如下: 指令窗(Command Window),在該窗可鍵入各種送給MATLAB 運作的指令、函數、表達式,并顯示除圖形外的所以運算結果。 歷史指令窗(Command History),該窗記錄已經運行過的指令、函數、表達式;允許用戶對它們進行選擇復制、重運行,以及產生M 文件。 工作空間瀏覽器(Workspace Browser),該窗口羅列出MATLAB 工作空間中所有的變量名、大小、字節數;并且在該窗中,可對變量進行觀察、編輯、提取和保存。其它還有當前目錄瀏覽器( Current Directory Browser ) 、M 文件編輯/ 調試器(Editor/Debugger)以及幫助導航/瀏覽器(Help Navigator/Browser)等,但通常不隨操作界面的出現而啟動。利用File 菜單可方便對文件或窗口進行管理。其中File | New 的各子菜單,M-file(M 文件)、Figure(圖形窗口)、或Model(SIMULINK 編輯界面)分別可創建對應文件或模塊。Edit 菜單允許用戶和Windows 的剪切板交互信息。MATLAB 語言最基本的賦值語句結構為:變量名列表=表達式。表達式由操作符或其它字符,函數和變量名組成,表達式的結果為一個矩陣,顯示在屏幕上,同時輸送到一個變量中并存放于工作空間中以備調用。如果變量名和“=”省略,則ans 變量將自動建立,例如鍵入:1900/81,得到輸出結果:ans =23.4568。MATLAB 中變量命名的原則要求必須以英文字母開頭,文件夾名字中可以還包括、下劃線和數字,不要使用其他的字符,更不要單純使用數字或者中文名命名,有時在運行MATLAB 中一些莫名的錯誤可能就是不規范的命名引起的。這種規則包括將來為自己編寫的腳本文件、函數文件命名以及為使用的變量命名也應遵循這個規則。實驗內容一用戶工作目錄和當前目錄的建立和設置1 為管理方便,每個用戶在使用MATLAB 前,盡量為自己建立一個專門的工作目錄,即“用戶目錄”,用來存放自己創建應用文件。例如首先打開資源管理器,在E 驅動器下可以根據自己喜好建立一個新文件夾,但應注意:該文件夾必須以英文開頭,文件夾名字中可以包括字母、下劃線和數字,不要使用其他的字符,更不要單純使用數字或者中文名命名,有時在運行MATLAB 中一些莫名的錯誤可能就是不規范的命名引起的,這與MATLAB 中為變量和文件名命名原則是一致的。盡管MATLABwork允許用戶存放用戶文件,但最好把它僅作為臨時工作目錄來使用。2 為了用戶運行方便,在開始工作前可把用戶定義的目錄設置為當前目錄,方法是可直接在MATLAB 命令窗口桌面上方通過目錄設置欄來實現。3 把自己的工作目錄加到MATLAB 搜索路徑上,這樣可以在任何情況下方便地調用自己的編寫文件。MATLAB 工作時,基本搜索過程為:首先在工作空間,即MATLAB 內存中進行檢查,看輸入的指令是不是變量;如不是,則檢查輸入指令是不是內建函數(比如sin 函數等);如不是,則在當前目錄上,檢查是否有與輸入指令相同的M文件存在;如還沒有,則在MATLAB 定義的搜索路徑其他目錄中,檢查是否有該M文件存在。設置方法是通過File 菜單下設置路徑對話框進行。二熟悉簡單的矩陣輸1 從屏幕上輸入矩陣A=1 2 3;4 5 6;7 8 9 回車A=1,2,3;4,5,6;7,8,9 回車觀察輸出結果。2 試用回車代替分號,觀察輸出結果。3 輸入size(A),觀察結果。4 輸入矩陣B=9,8,7;6,5,4;3,2,1;回車輸入矩陣C=4,5,6;7,8,9;1,2,3;回車,然后分別鍵入A B C 回車觀察結果。5 選擇File|new 菜單中的M-file,輸入B=9 ,8,7;6,5,4;3,2,1;保存為B.M 文件,退出編輯環境。此時在工作環境中使用B 命令就可調出B 矩陣。6 再試著輸入一些矩陣,矩陣中的元素可為任意數值表達式,但注意:矩陣中各行各列的元素個數需分別相等,否則會給出出錯信息。7 輸入who 和whos 觀察結果,了解其作用。二常用基本命令的使用數據文件的存取訓練:利用save 和load 指令可以方便地把當前工作空間的數據變量保存為數據文件。接題一,輸入:save a 回車,表示把當前工作空間的所有變量保存為a.mat 文件。輸入save a A C 回車,表示把當前內存中的變量A、C 保存為a.mat 文件。類似的還有load 命令,實現保存數據變量的裝載,執行clear 命令,然后運行load a 回車,觀察工作空間的變化。save、load、clear 命令還有一些其他的應用格式,具體可參看幫助文件。三基本序列運算1 數組的加減乘除和乘方運算2 輸入A=1 2 3,B=4 5 6,求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.B,并用stem畫出A,B,C,D,E,F,G。再輸入一些數組,進行類似運算。3 在命令窗口用plot 指令粗略描繪下列各函數的波形(其中對于連續信號可取時間間隔為0.001,可參看下面的a 的實例來實現,數學函數MATLAB 實現參見附錄)a. 實現方法,在命令窗口執行一下指令,可簡單描繪出函數曲線:t=0:.001:3;y=3-exp(-t);plot(t,y)b. c. d. 2 t 3)可以找出數組X 中所有絕對值大于3 的元素。另外還可以借助ones, zeros, rand, randn 和cat,repmat, reshape 等函數直接或間接構作高維數組,詳見附錄或MATLAB 幫助。Matlab 中的許多函數可以直接對任意維的數組直接運算,相當于對數組中的每個元素分別進行運算。比如Y=sin(X)可以直接得到與數組X 中每一個元素相對應的的正弦值,這大大簡化了編程。可以執行數組運算的常用函數已經列表于附錄中,以供參考。但值得注意的是,雖然從外觀形狀和數據結構上看,二維數組和(數學中的)矩陣)沒有區別,但矩陣作為一種變換或映射算子的體現,矩陣運算有著明確而嚴格的數學規則。數組運算是MATLAB軟件所定義的規則,其目的是為了數據管理方便、操作簡單、指令形式自然和執行計算的有效。為了區別數組和矩陣運算,在易混淆的地方,數組運算在運算符前加一小黑點“.”以示區別,比如Y=A.*B,代表的示數組A 和數組B 對應元素相乘,而Y=A*B,則表示內維相同的矩陣A 和B 的乘積。由此也可看出,在執行數組與數組的運算時,參與運算的數組必須同維,運算所得結果也總與原數組同維。本節只涉及數組可視化方法的簡單實現。通常,對于離散數據可采用stem 命令或者使用plot 繪點的方法,而對于連續函數可直接采用plot 指令來實現。實驗內容一數組的創建和尋訪1一維數組在命令窗口執行下面指令,觀察輸出結果,體味數組創建和尋訪方法,%號后面的為注釋,不用輸入。rand(state,0) %把均勻分布偽隨機發生器置為0 狀態x=rand(1,5) %產生(1 5) 的均布隨機數組x(3) %尋訪數組x 的第三個元素。x(1 2 5) %尋訪數組x 的第一、二、五個元素組成的子數組。x(1:3) %尋訪前三個元素組成的子數組x(3:end) %尋訪除前2 個元素外的全部其他元素。end 是最后一個元素的下標。x(3:-1:1) %由前三個元素倒排構成的子數組x(find(x0.5) %由大于0.5 的元素構成的子數組x(1 2 3 4 4 3 2 1) %對元素可以重復尋訪,使所得數組長度允許大于原數組。x(3) = 0 %把上例中的第三個元素重新賦值為0x(1 4)=1 1 %把當前x 數組的第一、四個元素都賦值為1x3=; %空數組的賦值操作2二維數組(1)在命令窗口執行下面指令,觀察輸出結果a=2.7358; b=33/79; %這兩條指令分別給變量 a ,b 賦值。C=1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i %這指令用于創建二維數%組CM_r=1,2,3;4,5,6,M_i=11,12,13;14,15,16 %創建復數數組的另一種方法CN=M_r+i*M_i %由實部、虛部數組構成復數數組(2)利用M 文件創建和保存下面的數組(分號后面是一個空格后加3 個小數點,表示換行續寫)AM=101,102,103,104,105,106,107,108,109;.201,202,203,204,205,206,207,208,209;.301,302,303,304,305,306,307,308,309;(3)仿照問題1 中方法找出數組A 中所有絕對值大于3 的元素。(4)在命令窗口執行下面指令,體會二維數組的子數組尋訪和賦值A=zeros(2,4) %創建(2 4) 的全零數組A(:)=1:8 %全元素賦值方式s=2 3 5; %產生單下標數組行數組A(s) %由“單下標行數組”尋訪產生A 元素組成的行數組Sa=10 20 30 %Sa 是長度為3 的“列數組”A(s)=Sa %單下標方式賦值A(:,2 3)=ones(2) %雙下標賦值方式:把A 的第2、3 列元素全賦為1(5)運行指令rand(state,11),A=rand(3,10000);B=(A0.5);C=2*B-1;首先預測(C*C)/100 的運行結果,然后再在機器上驗證。(本方法提供了產生通信等仿真中常需若干獨立的雙隨機碼的方法原型。)(6)在命令窗口執行下面指令,體味數組運算與矩陣運算的區別clear;A=zeros(2,3);A(:)=1:6; %全元素賦值法A=A*(1+i) %運用標量與數組乘產生復數矩陣A_A=A. %數組轉置,即非共軛轉置,其中單引號實現轉置功能A_M=A %矩陣轉置,即共軛轉置二編寫如圖所示波形的MATLAB 腳本文件,圖中虛線為正弦波,要求它分別在及處削頂。圖1可能用到的額外指令: find、hold on、hold off、 legend,具體使用方法使用help指令名來解答。實驗三 字符串數組的使用、簡單腳本文件和函數的編寫實驗目的1掌握字符串數組的創建和構造方法及常用字符串函數的使用。2熟練掌握MATLAB 控制流的使用方法。3熟悉M 腳本文件、函數文件的編寫方法和技巧。實驗原理與數值數組相比,串數組在MATLAB 中的重要性較小,但不可缺少。如果沒有串數組及相應的操作,那么數據可視化、圖形用戶界面的制作將會遇到困難。字符串與數值數組是兩種不同的數據類,它們的創建方式也不同。字符串的創建方式是:將待建的字符放在“單引號對”中。注意,“單引號對”必須是在英文狀態下輸入,其作用是MATLAB 識別送來內容“身份”所必需的,如A=This is an example!;就創建了一個字符串A。注意創建帶單引號的字符串時,每個單引號符用“連續2 個單引號符”標識。字符串的標識同數值數組同,而且也可以使用size 指令觀察串數組的大小。串數組的ASCII 碼可以通過指令abs 和double 來獲取,而用char 指令可以把ASCII 碼變為串數組,另外,MATLAB 可以很好的支持中文字符串數組。對于復雜串數組的創建,一是可以直接創建,但是要保證同一串數組的各行字符數相等,即保證各行等長,不推薦,太繁瑣。二是可以利用串操作函數創建多行數組,比如char, str2mat, strvcat 等,具體操作自己通過幫助體會。另外還可以通過轉化函數產生數碼字符長,比如A_str=int2str(A) 就是把整數數組A 轉換成串數組,如果是非整數將被四舍五入后再轉換,類似的函數還有num2str(把非整數數組轉換為串數組,常用于圖形中數據點的標識)、mat2str(把數值數組轉換成輸入形態的串數組,常與eval 指令配用)。假如想靈活運用MATLAB 去解決實際問題,想充分調動MATLAB科學技術資源,想理解MATLAB 版本升級所依仗的基礎,那么掌握M 腳本文件合函數的編寫規則將十分有用。用戶通過本次實驗,感受抽象概念的內涵、各指令間的協調,從感知上領悟MATLAB 編程的優越和要領。編寫M 腳本文件的步驟:l 點擊MATLAB 指令窗工具條上的New File圖標 ,就可打開如上圖所示的MATLAB 文件編輯調試器MATLAB Editor/Debugger。其窗口名為untitled ,用戶即可在空白窗口中編寫程序。l 點擊編輯調試器工具條圖標 ,在彈出的Windows 標準風格的“保存為”對話框中,選擇保存文件夾,鍵入新編文件名(如newfile.m),點動【保存】鍵,就完成了文件保存。l 運行可有兩種方法,一種是直接點擊編輯調試工具條圖標,即可直接運行;或者使newfile.m 所在目錄成為當前目錄,或讓該目錄處在MATLAB 的搜索路徑上,然后在命令窗口鍵入指令newfile回車,便可得到運行結果。l 調試程序方法有多種,常見的是設置斷點的方法,將光標移到程序欲執行到的位置,點擊編輯調試工具條圖標,保存后運行,程序將停止在該語句位置并彈出編輯器界面等待用戶下一步運行的指令,只有再次點擊按鈕,才繼續向下執行。相應的按下按鈕,表示清除所有斷點。如果不設置斷點,也可以在程序中加入pause 指令,使得程序在此處暫停,只有用戶按任意鍵程序才依次向下執行。則在pause 指令的前面位置我們可以通過交互的方式得到我們想要的信息,以檢測程序的正確性。 編寫MATLAB 腳本文件或函數文件時要區分開與C 語言格式的不同。MATALB 使用變量前不需要聲明數據類型,對于所有的數值型數據MATLAB 均以Double 型存儲。另外編程時盡量使用MATLAB 向量(數組)編程方式,可大大提高編程效率,盡量避免過多使用for 循環等語句。MATLAB 提供了五種控制流的結構:for 循環結構,while 循環結構,if-else-end 分支結構,以及switch-case 結果、try-catch 結構。這些控制指令用法與其他語言十分類似,這里只給出簡要說明。For 循環: while 循環結構for x=array(commands)end while expression(commands)end if-else-end 結構 單分支(常用) 雙分支(常用) 多分支(常被swith-case 取代)if expression(commands1)else(commands1)endif expression(commands)end if expression1(commands1)elseif expression2(commands2)else(commandsk)endend上面幾條控制語句中,for 循環結構中x 稱為循環變量,組命令(commands)被稱為循環體,循環體被重復執行的次數是確定的,該次數由for 指令后面的數組array 的列數決定。換言之,循環變量依次取數組的各列,對于每個變量值,循環體被執行一次。while 循環是首先檢測expression 的值,如其值為邏輯真(非0),則執行組命令,當組命令執行完畢,繼續檢測表達式的值,仍為真,循環執行組命令,一旦表達式值為假,就結束循環。一般情況下,表達式的值是標量值,但MATLAB 允許其為一個數組,此時只有該數組所有元素均為真時,MATLAB 才會執行循環體。若表達式為空數組,則不執行循環體。if 指令判決和break 指令的配合使用,可以強制中止for 循環或while 循環。switch-case 結構 try-catch 結構switch excase test1(commands 1)case test2case testk(commands k)otherwise(commands) try ex(commands 1)catch(commands 2)end switch 指令后面的表達式應為一個標量或者為一個字符串。對于標量形式的表達式,比較這樣進行:表達式檢測值i。對于字符串,MATLAB 將調用函數strcmp 來實現比較:strcmp(表達式,檢測值i).try-catch 結構,只有當MATLAB 在執行組命令1 時出現錯誤后,組命令2 才會被執行。當執行組命令2 時又出錯,MATLAB 將中止該結構。隨指令數的增加或隨控制流復雜度的增加,以及重復計算要求的提出,采用M 腳本文件進行編程較為適宜。這種腳本文件的構成比較簡單,它是一串按照用戶意圖排列而成的MATLAB 指令集合。腳本文件運行后,所產生的所有變量都駐留在MATLAB 基本工作空間中,只要用戶不使用clear 指令加以清除,且MATLAB 指令窗口不關閉,這些變量將一直保存在基本工作空間中。與腳本文件不同的,函數文件猶如一個“黑箱”。從外界只能看到傳給它的輸入量和送出的計算結果,而內部運作是藏而不見的,特點是:l 從形式上看,與腳本文件不同,函數文件的第一行總是以“function”引導的“函數聲明行”。該行還羅列出函數與外界的聯系的全部“標稱”輸入輸出宗量。但對“輸入輸出宗量”的標稱數目并沒有限制,即可以完全沒有輸入輸出宗量,也可以是任意數目。形如unction sa=circle(r,s)。這里r、s 稱為輸入宗量,sa 稱為輸出宗量,函數名為circle,同時注意保存的函數文件名應與這里的函數名一致,即存為circle.m 文件。l MATLAB 允許使用比“標稱”數目較少的輸入輸出宗量實現對函數的調用,但前提是函數中應該有相應的處理程序。l 從運行上看,與腳本文件不同,每當函數文件運行時,MATLAB 就會專門為它開辟一個臨時的工作空間,稱之為函數工作空間。所有中間變量都存放在函數工作空間中。當執行完文件最后一條指令或遇到return 時,就結束該函數文件的運行,同時該臨時函數空間及其所有的中間變量就立即被清除。l 假如在函數文件中,發生對某腳本文件的調用,那么該腳本文件運行產生的所有變量都存放在該函數空間中,而不是存放在基本空間。實驗內容一串數組的創建和尋訪1 先請實際操作下例,以體會數值量與字符串的區別clear %清除所有內存變量a=12345.6789 %給變量a 賦數值標量class(a) %對變量a的類別進行判斷a_s=size(a) %數值數組a 的“大小”b=S %給變量b賦字符標量(即單個字符)class(b) %對變量b的類別進行判斷b_s=size(b) %符號數組b 的“大小whos %觀察變量a,b 在內存中所占字節2 已知串數組a=”This is an example.”,試將其到序輸出。3 接上題,試執行ascii_a=double(a),觀察其ASCII 碼,并將ASCII 碼變回字符串。4 設A=”這是一個算例”,重復上面的23。5 嘗試用直接輸入法在命令窗口創建字符串s,第一行時“This string array”,第二行是“has multiple rows.”。6 利用串操作函數char、str2mat、strvcat 分別寫出使以下這段文字成為字符串的程序,注意保持這段文字的格式。在英式用法中,引號通常是單引號,如Fire!。In GB usage quotation marks are usually single:Fire!.二腳本文件實現,0 t 3 ,并在圖上標出圖名和極大值點坐標。如下圖所示。可能用到的函數:num2str, char, text, hold on, 具體應用自己查找help 文檔。三編程實現分別用for 或while 循環語句計算: 的程序,并給出運行結果。此外,實現一種避免使用循環的的計算程序。四函數文件1 詳讀并運行下面的circle.m 函數文件。體會M 函數文件的編寫結構及方法。%后面的內容稱為注釋行,不被執行,起注釋說明作用。function sa = circle(r,s) % 首行是函數聲明行,以function開頭%CIRCLE 以制定顏色畫半徑為r的圓面% r 指定半徑的數值% s 指定線色的字符串% sa 圓面積% circle(r) 利用藍實線畫半徑為 r 的圓周線.% circle(r,s) 利用串 s 指定的線色畫半徑為 r 的圓周線.% sa=circle(r) 計算圓面積,并畫半徑為 r 的藍色圓面.% sa=circle(r,s) 計 算圓面積,并畫半徑為 r 的 s 色圓面.% 編寫于1999年4月7日,修改于1999年8月27日。if nargin2 % nargin表示輸入宗量的變量個數,是系統保留變量error(輸入宗量太多。); % error把引號的內容在命令窗口前加問號輸出endif nargin=1s=b;endclf %清圖形窗口t=0:pi/100:2*pi;x=r*exp(i*t);if nargout=0 % nargin表示輸出宗量的變量個數,是系統保留變量plot(x,s);elsesa=pi*r*r;fill(real(x),imag(x),s) % fill指令是填充顏色指令,具體看幫助endaxis(square) % 使得輸出圖形坐標為正方形2 編寫一個簡單的函數文件,它具有如下性質:該函數被調用時,如果不指定輸入變量,則自動輸出“用戶,你忘記給定輸入變量了!”;當輸入大于1 的整數時,則輸出“你是一個合法用戶!”;當輸入的是一個非正整數時,函數文件會給出一個錯誤提示“你是非法用戶!”【提示:可能用到disp,error 等指令,使用方法自己查詢幫助】實驗四 數據可視化方法實驗目的1掌握曲線繪制的基本技法和指令,會使用線形、色彩、數據點標記表現不同數據的特征,掌握生成和運用標識注釋圖形。2進一步掌握函數編寫及數據可視化方法。實驗原理MATLAB 提供了相當強大的可視化指令,通過這些指令,我們可以非常簡單地實現數據的可視化。首先我們來看離散數據和離散函數的可視化方法。對于離散實函數yn=f(xn) ,當xn以遞增(或遞減)次序取值時,根據函數關系可以求得同樣數目的yn,當把這兩組向量用直角坐標中的點次序圖示時,就實現了離散函數的可視化。當然這種圖形上的離散序列所反映的只是某確定的有限區間內的函數關系,不能表現無限區間上的函數關系。通常我們可以采用plot 或者stem 來實現。只是需要注意的是使用plot 時,需要使用星號或者點等標識來表示數據點,比如plot(xn,yn,r*,MarkerSize,20),就表示用字號20的紅色星點來標識數據點,此時為了便于觀察,通常隨后加上一條語句“grid on”,即給圖形加上坐標方格。而采用stem 標識數據點的格式是stem(xn,yn)。連續函數的可視化與離散函數可視化類似,也必須先在一組離散自變量上計算相應的函數值,并把這一組“數據點”用點圖示。但這些離散的點不能表現函數的連續性。為了進一步表示離散點之間的函數函數情況,MATLAB 有兩種常用處理方法:一是對區間進行更細的分割,計算更多的點,去近似表現函數的連續變化;或者把兩點用直線連接,近似表現兩點間的(一般為非線性的)函數形狀。但要注意,倘若自變量的采樣點不足夠多,則無論哪種方法都不能真實地反映原函數。對于二維數據,常用指令仍舊是plot。對于離散數據,plot指令默認處理方法是:自動地把這些離散數據用直線(即采用線性插值)連接,使之成為連續曲線。對于三維圖形的表示,通常有plot3 等指令。通常,繪制二維或三維圖形的一般步驟如下表所示:步驟典型指令1曲線數據準備l 先取一個參變量采用向量l 然后計算各坐標數據向量t=0:.001:3*pi; %參變量采用向量t=linspace(0,3*pi,1000) %參變量采用向量另種方式%y=f(t); %計算相應的函數值2選定圖形窗及子圖位置l 缺省時,打開Figure No.1,或當前窗,當前子圖l 可用指令指定圖形窗號和子圖號figure(1) %指定1 號圖形窗Subplot(2,2,3) %指定3 號子圖3調用二維或三維繪圖指令指定好線形、色彩、數據點形plot(t,y,r:) %用紅虛點畫二維線,畫三維可用%plot3 指令,此處略4設置軸的范圍、坐標分格線axis(x1,x2,y1,y2) %平面坐標范圍grid on % 坐標分格線5圖形注釋:圖名、坐標名、圖例、文字說明等title(調制圖形) % 圖名xlabel(t); ylabel(y) % 軸名legend(sin(t),sin(t)sin(9t) % 圖例text(2,0.5,y=sin(t)sin(9t) %文字說明6著色、明暗、燈光、材質處理等(僅對三維圖形使用)colormap, shading, light, material7視點、三度(橫、縱、高)比(僅對三維圖形使用)view, aspect8圖形的精確修飾(圖柄操作)l 利用對象屬性值設置l 利用圖形窗工具條進行get, set9打印l 圖形窗上的直接打印選項或按鍵l 利用圖形后處理軟件打印%采用圖形窗選項或按鍵打印最簡捷print dsp2 %專業質量打印指令說明:l 步驟1、3 是最基本的繪圖步驟,一般來說,由這兩步所畫出的圖形已經具備足夠的表現力。至于其他步驟,并不完全必需。l 用戶可根據自己需要改變上面繪圖步驟,并不必嚴格按照執行。l 步驟2 一般在圖形較多情況下使用,此時需要指定圖形窗、指定子圖。l 步驟8 涉及圖柄操作,需要對圖形對象進行屬性設置,較為復雜。l MATLAB 提供了交互式圖形編輯功能,可方便地對圖形精細修飾。plot 等繪圖指令的典型調用格式為:plot(t,y,s)。其中s 是用來指定線型、色彩、數據點形的選項字符串。S 的合法取值如下所示,格式形如r+。如果缺省,此時線型、色彩、數據點形將由MATLAB 默認設置確定。plot 進一步的使用可參看幫助文檔。s 可用來指定的線形分別有:“-”實線,“:”虛線,“-.”點劃線,“-”雙劃線。s 可用來指定的色彩分別有:b藍,g綠,r紅,c青,y黃,w白, k黑。s 可用來指定的數據點形有:“.”實心黑點,“+”十字符, “”朝上三角符,“v”朝下三角符,“d”菱形符,“p”五角星符等。常用的坐標控制指令axis 使用是最多的,比如axis(x1,x2,y1,y2)可人工設定坐標范圍,axis off 可取消軸背景,axis equal 橫縱軸采用等長刻度等。其他使用見幫助。需要特別指出的是,當遇到在已經存在的圖上再繪制一條或多條曲線,可使用hold on指令,可保持當前軸及圖形保持不被刷新,并準備接收此后繪制的新曲線,hold off 則取消此功能。對于想畫多個獨立的圖形,則會用到figure(n)指令,這里n 為整數,可順序從1 向后排。如果想在特定圖形中布置幾幅獨立的子圖,則會用到subplot(m,n,k),即在(mn)幅子圖中的第k 幅成為當前圖;subplot(position,left bottonwidth height),表示在指定位置上開辟子圖,并成為當前圖。使用clf 指令可清除圖形窗的內容。另外MATLAB 還提供了ginput、gtext、legend 等交換指令。x,y=ginput(n),可用鼠標從二維圖形上獲取n 個點的數據坐標(x,y),該指令只適用于二維圖形,在數值優化、工程設計中十分有用。通常在使用前先對圖進行局部放大處理。實驗內容一仿照運行,體會數據可視化方法。1已知n=0,1,12,y=|(n-6)|-1,運行下面程序,體會離散數據可視化方法。% 用stem 實現離散數據可視化n=0:12;y=1./abs(n-6);stem(n,y)% 用plot 實現離散數據可視化n=0:12; %產生一組自變量數據y=1./abs(n-6); %計算相應點的函數值plot(n,y,r*,MarkerSize,20) %用紅花標出數據點grid on %畫坐標方格 說明:l plot 和stem 指令均可以實現離散數據的可視化,但通常plot 更常用于連續函數中特殊點的標記;而stem 廣泛運行與數字信號處理中離散點的圖示。l 用戶在運行上面例程時會發現在命令窗口出現警告:Warning: Divide byzero!即警告程序中出現非零數除以0 的指令。MATLAB 對于這種情況并不中止程序,只是給該項賦值為inf 以做標記。2下面時用圖形表示連續調制波形y = sin(t)sin(9t) ,仿照運行,分析表現形式不同的原因。cleart1=(0:11)/11*pi; y1=sin(t1).*sin(9*t1);t2=(0:100)/100*pi; y2=sin(t2).*sin(9*t2);subplot(2,2,1),plot(t1,y1,r.),axis(0,pi,-1,1),title(子圖 (1)subplot(2,2,2),plot(t2,y2,r.),axis(0,pi,-1,1),title(子圖 (2)subplot(2,2,3),plot(t1,y1,t1,y1,r.)axis(0,pi,-1,1),title(子圖 (3)subplot(2,2,4),plot(t2,y2)axis(0,pi,-1,1),title(子圖 (4)二編程實現。1用圖形表示連續調制波形y = sin(t)sin(9t) ,過零點及其包絡線,如下圖所示。2 勵條件下二階系統歸一化響應可表現為,其中為阻尼系數, , 。請用不同的顏色或線型,在同一張圖上,繪制= 0.2 : 0.2 : 2.0取值下系統在t0,18 區間內的響應曲線,并要求用= 0.2和=2.0對它們相應的兩條曲線進行醒目的文字標志。3 編寫函數x,n=stepseq(n0,n1,n2),實現: n為整數并編寫腳本文件實現:x(n) = nu(n) u(n 10) +10e-0.3(n-10) u(n 10) u(n 20), 0 n 20要求在腳本文件中調用stepseq 函數,最后繪出序列x(n) 在給定區間的波形圖。4 編寫一個函數文件 y,n=sigadd(x1,n1,x2,n2),實現兩個對應樣本之間的相加,其中x1 是長度為n1 的序列,x2 是長度為n2 的序列,n1、n2 分別是x1、x2 的位置信息(n1、n2 均為整數),如:n1= -3,-2,-1,0,1,2,3,4,對應的x1= 2, 3, 1,4,1,3,1,2;n2=-4,-3,-2,-1,0,1,2,對應的x2= 1, 3, 2, 5,1,3,4。當調用函數y,n=sigadd(x1,n1,x2,n2)時,我們應該得到:n=-4,-3,-2,-1,0,1,2,3,4,對應的y= 1, 5, 5, 6,5,4,7,1,2。仔細觀察sigadd 函數的功能。編好函數文件程序后,請在命令窗口調用,驗證正確性,記錄驗證結果。實驗五 簡單數據分析實驗目的1初步掌握利用MATLAB 實現數據的擬合、插值、簡單數據分析等。實驗原理數值計算能力是MATLAB 稱雄世界的根本柱石。MATLAB 內建了很多函數可以求解線性方程、特征值問題以及有關多項式和卷積、數據分析、泛函、信號處理、系統分析等方面的指令。結合目前的學習進度,本課程內只簡單討論數據的擬合、插值、簡單數據分析及在實驗中討論函數的零極點求法等內容,對其他內容有興趣的可參看參考書籍。MATLAB 提供了擬合和插值的相關函數。曲線擬合是研究如何尋找“平滑”曲線最好地表現帶噪聲的“測量數據”點。而插值是在認定所給“基準數據”完全正確的情況下,研究如何“平滑”地估算出“基準數據”之間其他點的函數值。因此插值所得曲線一定穿過“基準數據”。而擬合曲線就不一定了。另外,擬合多項式只能在給定數據所限定的區間內使用,不要任意向往拓展。而每當基準數據之間其他點上函數值沒法獲得,或獲得的代價很好時,插值就發揮作用。插值指令很多,有interp1,interp2,interp3 等。采用的插值算法也很多,如線形插值、三次多項式插值算法、樣條插值等。對于多項式擬合有polyfit、poly2str、polyval 等函數,具體請參看幫助和范例。MATLAB 內建了很多數據分析函數,比如常用的隨機數發生器函數rand,randn;統計分析指令有:min求最小值,max求最大值,mediam求中值,mean求平均值,std求標準差,sort排序指令等。;差分和累計函數diff、prod、sum 等。另外MATLAB還提供了很多泛函指令、信號處理專業工具包、系統分析中的控制工具包以及諸如微分、求導等符號運算功能等等,有需要的可參看幫助及相關書籍。實驗內容一 數據擬合及插值1下面是對給定數據點(x0,y0)進行多項式三階擬合的例子,仿照運行,掌握數據擬合的一般方法。% 首先給定數據對x0=0:0.1:1;y0=-.447,1.978,3.11,5.25,5.02,4.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 筆的制造生產過程優化與仿真技術考核試卷
- 紙板容器工廠環境噪聲治理考核試卷
- 石棉水泥制品的國內外質量標準對比考核試卷
- 外科個案護理專題分析
- 新生兒高膽紅素血癥業務查房
- 腦癱患者麻醉管理規范
- Heneicomycin-生命科學試劑-MCE
- 湖北省2025年中考第三次模擬考試道德與法治試卷(解析版)
- 房地產行業深度報告-“好房子”系列專題一:四代宅崛起政策紅利與產品創新驅動居住升級
- 2025年下半年食品飲料行業寒來暑往結構破局
- 變電工程施工合同協議書
- 電工技術-北京科技大學中國大學mooc課后章節答案期末考試題庫2023年
- 星海音樂學院樂理試題A卷
- 2019年4月27日山東省紀委監委遴選公務員考試真題及答案
- ktv包房服務員崗位職責8篇
- 西安某大跨度鋼桁架人行天橋結構設計分析
- 新疆全部及全國部分加氣站分布情況6
- 初中學段勞動任務清單(七到九年級)
- 2023年中國各地磁偏角
- 六維領導力專題知識
- 【護士資格考試】云南省精神病醫院模擬檢測練習題
評論
0/150
提交評論