




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ApproachtoMATLABLectureScriptChenjx2013.4.15MATLAB入門及其在DSP中應用●MATLAB:是MATrixLABoratory,矩陣實驗室的縮寫。該軟件在大學教學中的地位相當于設計行業的CAD軟件。是經常進行計算機數值運算的自動控制、電子信息類學科人員應該掌握的有力工具。●特點:易學易用,通過幾個小時的練習就可以入門。使用方法類似于高級計算器。它是基于矩陣運算的人機對話交互式軟件,適合于科學計算、工程計算和繪圖,其運行結果具有很好的可視性。采用解釋方式,而不是編譯方式工作。每輸入一條語句,馬上就能夠看到該語句的結果。很符合人們的自然交流思想的習慣。(參考教材:西電,陳懷琛、樓順天他們2人均有系列書籍)MATLAB常識●基本概念:①對話語句中,每個變量默認代表一個矩陣,變量可以有n×m個元素,特別有單個元素,數組,方陣。②每個元素都看成是復數。即實數是虛部為零的復數。③所有的運算(加、減、乘、除、函數)都對矩陣及復數有效。④矩陣的行、列(階)無需定義,由輸入數據行、列數的多少而能夠自動決定。⑤智能化繪圖功能,自動確定合適(autoscale)的坐標,可繪制三維的彩色圖形。⑥極強的可擴展性,在基本軟件主體平臺上能夠外掛各種專業的模塊工具箱(Toolbox)。MATLAB工作環境●MATLAB主要工作環境(界面):①命令窗(CommandWindow)。②圖形窗(FigureWindow)。③文本編輯器(FileEditor)英文半角,區分大小寫。各窗口切換快捷鍵(shortcut):Alt+Tab。●命令窗:人機交互對話窗,可在此窗中鍵入MATLAB的各種命令。如:x1=sqrt(5),2=[13;24],y=3/x2●在命令窗中的鍵入命令行及其修改方法:↑鍵CtrL-P是調出上一行(歷史)命令,Home移行首↓鍵CtrL-N調出下一行命令,End移至該行尾。Clc是清窗口擦除。Esc鍵是恢復命令輸入行的空白狀態(清除該行)。MATLAB工作環境(續)●主菜單File中的Preferences(備選):①命令窗字體、背景等設置。②文本編輯器選擇。內建builtin自帶的與外掛兩類。③數字格式設置(NumericFormat)。命令:Formatlong(16位decimal)也稱為二進制雙精度,MATLAB只用這一種數據格式存儲與運算。但顯示出來為了方便習慣,則有很多種可選的顯示形式。Formatbank(2位小數的十進制):24.83Formatshort(4位小數的十進制):24.8325(默認Default就是這種保留4位小數形式)Formatshorte(5位十進制帶指數):24.832e+02Formatlonge(16位十進制帶指數):24.83….4e+02Formathex(16位十六進制數):形如4ab42cd102ef00daFormat+(根據結果正顯示+、或負顯示-、或零0)Formatrat(分數近似):148/6顯示布局:Loose稀疏(默認)與Compact緊湊,緊湊布局省去許多空行,可使一屏顯示更多內容。在preference中選formatcompact就可進入。默認(default)是稀疏狀態。●Demo命令:用來演示該軟件自帶的一些典型程序。●Help:它是軟件的重要組成部分。這個命令可以看到MATLAB內許多函數庫,以及庫中的各種函數的使用方法和例子。點Help按鈕選HelpWindow可以查閱,很重要!命令help
elfun,如果elfun(elementaryfunction)是(子目錄名)庫名,則得到該庫內的所有函數名稱。如果elfun本身就是函數名,則得到該函數的意義與用法。例子helptan2●關閉MATLAB:鍵入exit或quit或按右上角的×。●執行了任何一條繪圖命令,圖形窗就自動打開,如figure命令、plot命令、subplot命令、mesh命令等。●文件編輯器:可把一組命令語句編輯成一個文件,它擴展名是.M。如:Dsp1.M§1.基本語法●變量及其賦值:變量名、常量名、函數名、文件名的字符串總稱標識符。①變量名、常量名最長19個字符。超過部分自動切掉。②函數名、文件名不超過8個字符。(DOS版,現在windows版已能夠管理長文件名,不受此限制,但最好能夠遵守)。③標識符首字母必須為英文(52個,區別大小寫),可包含阿拉伯數字1234等和下劃線“_”。④機器數據格式只有一種:64bit二進制,即雙精度十進制(16位)。基本語法(續)●矩陣及其元素的賦值:變量=表達式(或數),標量看成是1×1階的矩陣。X=[-1.03sqrt(3),(1+2+3)/5*4,23;1234],方括號[]表矩陣,行元素之間用空格(建議使用)或逗號“,”分隔,矩陣內不同的元素行用分號“;”隔開。每一句結尾用逗號“,”或Enter就立即執行該行并顯示結果。若用分號“;”后Enter也是立即執行,但不顯示結果。●變量元素用園括號內含數字來表達:向量y(4),二維U(2,3),三維w(2,3,5)注意下標號之間用逗號分隔。下標超出則矩陣會自動擴展,而跳空的元素自動賦0。該自動功能只對賦值功能有效。特殊語法1●矩陣及其元素的賦值:①V(5,:)=[5,4,3]指V矩陣的第5行整行對應賦值。②N=V([2,4],[1,3])指V矩陣的第2行和第4行與第1列和第3列交差點的4個元素取出,形成新的2×2矩陣N。③V([2,4,5],:)=[];表示要從V中刪抽掉第2、第4、第5行,實際是看成對以上3行整行賦空矩陣[],它無元素,而不是0元素!本概念用于縮小已有的矩陣規模。例如:a(:,[24])=[];表示抽掉a矩陣中的第2列與第4列。④只有表達式,沒有變量。不產生數字結果或產生但不想保存它,這時軟件都默認用臨時變量ans來存放。如a/7,如果原來a=7,那么結果是ans=1.0000。特殊語法2●復數:c=3+5.2i
或c=2+3j,如果標識符i或j此前沒有賦值使用過,就默認為虛號,否則,說明已經被占用了,就會出錯。這時可用cleari,j語句來恢復它的默認特性。矩陣的復元素的實部與虛部可分別賦值:z=[1,2;6,7]+[3,4;8,9]*jconj()表示把元素的虛部反號,即僅共軛,;而符號
’指既共軛又轉置。如果只要轉置,要如何進行?特殊語法3●變量檢查:鍵入who,顯示工作空間Workspace中所有變量名,而幾個內定的變量:i,j,pi,eps,Inf和NaN則不顯示。鍵入whos,詳細顯示包括變量值、字節占用等多個特征參數。也可以用命令窗顯示按鈕獲得。①eps是相對浮點精度,機器能表達的極其小數。②Inf是無窮大,輸入2/0就可以得到它。NaN指非數,包括0/0,0*Inf,Inf/Inf三個情況,是不確定的,引入這個概念,可以避免因為數據很小(機器零)時出現一般意義上的非法運算而停機。出現Inf或NaN,對它們作任何運算,結果仍然是Inf或NaN。稱IEEE規則。特殊語法4●矩陣初等運算:加、減必須同階。測試階數[n,m]=size(w2).輸出的n是行數,m為列數。當矩陣與標量加,是自動把標量擴成同階等元素矩陣。若已知是一維向量,則它的維值(長度)也可用函數n=length(x)查詢獲得。作矩陣的+、-、*、\、/運算時,是先自動檢查階數“合格”后,再計算的。求A逆v=inv(A),就是先查det(A)=0?若接近0,稱病態矩陣ill-conditioned
。矩陣左除\、或右除/,實際分別是左乘或右乘其逆陣。線性分割函數linspace(a,b,n):在a與b之間均分n個點值。共有n-1分段。特殊語法5●矩陣的整體運算:冪“^”,指數expm,對數logm,開方sqrtm。①冪:底數矩陣必須為方陣,指數為標量。若指數是矩陣,則底數必須為標量。結果都是同階的方陣。②按矩陣內的元素做運算的exp、log、sqrt是與上不同的。●把n×m矩陣的每個元素當作運算對象,成群地進行某種運算,稱為元素群運算。Arrayoperations。①數組及其賦值:t=[初值:增量:終值],可得到等增量的數組。增量=1時,也可省略該項。如k=[1:10],則得到1,2,3……10的數組。也可用:t=linspace(初值,終值,點數)來獲得一維數組。點數省略,則表示默認取100點,即分成99段。特殊語法6對數分割(等比級數分割)函數:L=logspace(lg初值,lg終值,點數)。點數省略,則表示取50點,即分成49段。它經常用在頻率軸表示。●為區別矩陣的整體運算符號,元素群運算特地用.*、.\、./、.^表示相應運算,當然,要求參與群運算的矩陣同階(標量除外)。不同階沒有元素對應的條件。●元素群函數:除expm,logm,sqrtm這3個整體函數外,余均可以。特殊語法7●群運算例子:x=[0:0.1:pi/4]’;[x,sin(x),cos(x),tan(x)],
●顯示語句:disp(’xsin(x)cos(x)tan(x)’)。在單引號內的全部顯示,如果放入空格、漢字等也全部原樣顯示。disp([x,sin(x),cos(x),tan(x)])則是顯示矩陣中元素的值。●矩陣的元素序號index排列規定:以列從上到下、從左到右計算。序號與下標subscript是一一對應的。N行×m列的矩陣A中元素(j,k)的序號lp=(k-1)*n+j來計算。可用[j,k]=find(A)函數尋找A中所有非零元素的位置。也可用lp=find(A)尋找A中所有非零元素的序號。序號與下標互換函數:ind2sub與sub2ind。
特殊語法8●%是注釋符。其后的如何字符都只是說明。●邏輯的矩陣運算:以元素群運算方式進行,并得到一個同階的只有0或1的元素的矩陣。例如u=p|~p,得到的結果矩陣u與p同階全1。另外,增加了all全為真和any不全假兩個邏輯函數,它們是按列運算的。v=all(u),v中元素是如果該列u元素全1時為真1。v=any(u),v中元素是如果該列u元素不全0假時為真1。得到的V是個行向量。§2基本繪圖方法●MATLAB重要的特點是可視性很強,歸功于豐富的繪圖函數及手段。在(graphics,graph2d,graph3d,specgraph)4個函數庫中。●線性直角坐標中的二維曲線:plot語句:它以向量的序號為x坐標,元素值為y坐標,一一打點,各點以直線相連。系統自動選擇合適的坐標比例。是一個非常有用的函數。例如:y=5*(rand(1,10)-0.5),title(‘myfirstplot’),xlabel(‘n’),ylabel(‘y’),grid。●plot(x,y):以x元素值為橫坐標,向量y元素值為y坐標,一一對應,各點以直線相連。此時x與y同長度。基本繪圖方法(續)●線型、點型與顏色:plot(t,y,’+r’)如果加有選擇項,點型與顏色,點之間不再連線。查helpwindow中2維繪圖函數庫。標志ymcrgbwk顏色黃品紅青紅綠藍白黑標志.0×+-*:-.--點型實點圓圈×號+號實線星號點線點劃虛線常用繪圖函數1●多條曲線的繪制:
plot(t,[x,y,…]),長度相同,自動顏色。●hold命令:保持已繪制的圖,第二次執行到的plot函數就會畫在其上,形成多條。holdoff
命令,是解除保留功能。畫一張圖就覆蓋掉以前的。●plot(t,y,’+r’,t1,x,’:g’,p,w,’-y’)設置了多組向量對,可加選擇點型與顏色。●plotyy(t,y,’+r’,t1,y1,’*r’)2組向量對,橫坐標t和t1同分割,左縱坐標y與右縱坐標y1可不同比例。●gtext(’y’)函數,用來標注文字,由鼠標拖動放置。常用繪圖函數2●圖形屏幕窗的控制:包括:開與關,開多個圖形窗,一個窗內多幅分圖,各分圖可取不同坐標,擦除等。figure命令:打開新的圖形窗。第一個圖形窗在執行plot命令時會自動彈出。隨后的繪圖命令都將繪在該窗口中。如果要繪在另外窗口,用figure命令并自動編號。選擇哪個窗時,需要先執行選擇命令figure(i),再在該窗中繪圖。否則,都繪在最后顯示的那個窗圖中。clf命令:擦除當前圖形窗的內容。close命令:關閉當前圖形窗。常用繪圖函數3●subplot(n,m,p):把圖形窗分割成n×m子圖,并在第p張子圖處繪圖。輸入subplot(1,1,1)則回到全屏幕單圖形式。P的排列是“文字習慣”方向。從左到右,從上到下。axis命令:控制坐標軸的比例與外觀大小。該命令非常豐富實用。MATLAB默認是自動定比例尺的,鍵入axis(axis)將固定用最當前的比例尺,鍵入axis(’auto’)則恢復自動定比功能。V=axis,該語句得到當前圖形邊界4個參數,如是3維圖則有6個參數。用axis(v)可規定圖形邊界。V是4參數或6參數向量。axis(’equal’)2軸相同同比例尺。可以調整圖形外觀。常用繪圖函數4●直角坐標中其他繪圖形式:stem(t,y)是繪脈沖圖;stairs(t,y)是繪階梯圖;
bar(t,y)是繪條形圖;fill(t,y,’r’)是填充繪圖;如:title(’fill(t,y,”r”)’)注意:單引號內的單引號要用雙引號。但顯示到圖形上還是單引號’●polar(theta,rho)命令:繪制極坐標圖,角度是rad弧度。角度在第一個參數。●loglog(t,y,’+r’)命令:橫坐標t與縱坐標y以log10刻度。●semilogx(t1,y1,’*r’)命令:橫坐標t1對數刻度,而縱坐標y1是線性刻度。
semilogy(t1,y1,’*r’)命令:橫坐標t1線性刻度,而縱坐標y1是對數刻度。常用繪圖函數5●3維空間曲線plot3(x,y,z,’s’)s是線型與顏色標識,該項可省。●空間曲面繪制:mesh和surf函數,它以x-y網格點計算z的值,繪出高度點后,各點互連以直線,成曲面。繪圖與控制命令:可查閱helpgraph3d,helpspecgraph。●rotate3d,此命令執行后,以鼠標拖動3維圖形旋轉。●contour命令:把曲面等高線垂直投影到x-y平面上。●餅圖pie和條形bar及相量圖compass命令。●動畫命令movie。常用繪圖函數舉例●Sa函數:x=-8:0.5:8;y=x’;%x與y軸各有33個取樣點,間隔0.5。X=ones(size(y))*x;%全1列陣乘行向量x得到矩陣33×33。Y=y*ones(size(x));R=sqrt(X.*X+Y.*Y);%求1089個各網格點處到原點的距離。z=sin(R)./R;%抽樣Sa函數,可以進行旋轉觀看。mesh(z),pause%繪曲面圖。原點0/0是NaN,圖中缺掉一點。為什么?R=sqrt(X.*X+Y.*Y)+eps;%加個微小量。§3.M文件及程序調試●MATLAB有命令行和程序文件兩模式。后者是由matlab語句構成的用戶源程序,擴展名.m;又稱M文件,是ASCII文本。可直接用各種編輯軟件閱讀。●M文件分為:主程序文件(又稱底稿)與函數文件。主程序文件(腳本)scriptfile:用戶為解決特定問題編寫的程序。函數文件:供主程序調用的通用子程序。可遞歸。有700個基本的,幾千個專業的。關于編程用的基本語言結構,可看helplang中各種規則。●M文件格式:%后面直到該行尾是注釋,包括漢字。M文件格式(續)主程序與子程序共同使用的變量稱全局變量:用global聲明,各變量用空格分開。如globalx1y1wr…●程序編輯須是:半角英文字母和符號。建議用它自帶的編輯器較妥。它有智能提示與實時檢查功能。●M文件名不能帶有漢字,且要存放在matlab的搜索路徑上的子目錄中。這樣就完成了程序文件的編制。●自建的文件夾user要預先在matlab的搜索路徑上(搜索范圍)登記。可以用命令窗上的按鈕完成。或path。●在命令窗中鍵入該文件名就開始執行該自編的程序了。調試程序用的人機交互命令1●echoon與echooff:M文件中的命令語句執行時是不會顯示在屏幕上的。但如果加入echoon語句,則在其后要執行每行程序前,將先顯示出來。●pause(n)程序執行到此處,暫停n秒后,再繼續執行。若不帶時間參數,即pause,則一直等待至用戶按任意鍵后,才繼續執行。●keyboard:程序執行到此暫停,并顯示字符K,此時相當于回到命令行模式,用戶可以進行各種檢查。如要繼續執行,則鍵入return命令。●^C是強行終止程序運行。Control-C。調試程序用的人機交互命令2●X=input(’N=’)語句:程序執行到此暫停,并顯示單引號里的內容,此時要求用戶輸入數據,數據輸入后,就繼續執行。它也可以輸入字符串:S=input(’提示’,‘s’),把鍵入的字符串賦給S。●type程序名:將顯示該程序M語言清單。很有用。●save:把workspace的內容保存在默認的名matlab.mat。●savetempxyz…:把workspace的變量x,y,z保存在文件名temp.mat中。●load:與save相對應。函數文件(子程序)●由function
開頭,后跟的函數名必須與文件名相同。盡管它形式也是name.M。●有輸入、輸出的啞元變量。可進行變量傳遞。●除非經過global聲明,子程序中的所有變量都是局部的。不保存在工作空間中。●例子:mean.m。鍵入typemean。顯示:functiony=mean(x)…………例子●例子:mean.m。鍵入typemean。顯示:functiony=mean(x)%meanistogettheaverageofxwhenit’saarray。%meanistogetanaveragearraywhenxisamatrix。[m,n]=size(x);ifm==1m=n;end%dealwithanarray.y=sum(x)/m與Matlab軟件有關的常識●matlab主目錄下的各文件夾意義:●bin(二進制子目錄),是matlab.exe主程序,windows應用程序。●toolbox:內有local、matlab(含21個基本函數庫)兩個文件夾。●matlabrc.m(軟件啟動時主調用M文件,它規定了搜索路徑)。●用戶自建user文件夾后,用path按鈕放入搜索域內。●標識符(變量)辨認順序:工作空間變量——內部保留變量——擴展名.mex的文件名——擴展名.m的文件名。若文件名相同,只認優先。與Matlab軟件有關的常識●what命令:用來列出當前目錄下全部matlab能夠識別的所有文件。包括:后綴.m的程序文本文件、后綴.mex的二進制可執行文件、后綴.mat的數據文件。●在命令窗中或m文件里,以!開頭的命令行是DOS或windows操作系統的命令,不退出matlab環境,而執行相應的軟件。如:!Notepad
會打開記事本。●屏幕數據記錄:在命令窗鍵入diaryon,則從此時起以文本格式記錄屏幕所有內容于默認的文件diary中,如鍵入diarymy23,則放在文件my23中。diaryoff停止記錄隨后的屏幕內容。與Matlab軟件有關的常識●日期與時間命令:●date:提取當前日期的字符串。●clock:提取機器當前日期,包含年、月、日、時、分、秒。●cputime:提取當前cpu時鐘。●etime(clock,r):經歷時間,先對r賦時,再求與執行時刻差。●tic:秒表啟動,toc:秒表停止。此時顯示時間為經歷時間。●與Word的關系:能夠用剪貼板clipboard傳送命令窗中的所有文字、數據、圖形。Copy之前,應該先調整大小。用copyoption里的metafile(矢量模式)進行圖形cut與paste,在Word中還可縮放。而通常不用bitmap(點陣模式)。●例子:計算一個100階方陣的逆矩陣,所需要的時間。A=rand(100,100);tic;y=inv(A);tocMatlab常用函數庫的應用●隨機數矩陣:rand(m,n):生成m×n的0與1均布矩陣,E=0.5,方差0.2887randn(m,n):生成m×n正態分布矩陣,E=0,方差為1。y=randn(1,1000);hist(y,50)用直方圖顯示。●corrcoef(x,y),求同長度的信號向量的相關系數。●conv(x,y):給出x與y向量的線性卷積。●filter(b,a,x):輸入信號向量x,濾波器傳遞函數的分子多項式系數向量b,分母多項式系數向量a,產生輸出信號向量。Matlab常用函數庫的應用(續)●X=fft(x,N):求時間信號向量x的離散傅立葉變換X。N取最接近的大于x點數的2冪次點。自動后補零。復數向量X各元素的幅度與相位用abs及angle求出。●例子:t=0:.001:3;u=sin(300*t)+2*cos(200*t);U=fft(u);plot(abs(U))axis([0,300,0,3000])%前一對值是x坐標,后一對是y坐標范圍。a信號頻率100,幅度2,b信號頻率150,幅度1。采樣頻率1000×2π=3140多項式函數庫POLYFUN●表達:以正冪遞減向右排列、缺項為0形成向量如:a(x)=2x3+4x2+6x+8,其向量a=[2,4,6,8].●conv(p,q):多項式p與q相乘。●e=polyder(a):多項式求導。●多項式相加+,長度不等時,應在短的向量前面補零。為什么?●[q,r]=deconv(x,y):多項式相除,有兩個結果向量q與r,除商式外,還有余子式。規定:前向量q是商式,第二向量r是余子式。●b=root(c):多項式求根。●d=poly(b):由根反求多項式。多項式函數庫POLYFUN(續)●多項式求值:F=polyval(c,x0)。以x0值代入多項式求出值。例:頻響:w=linspace(0,10);%默認100點。A=polyval(a,j*w);B=polyval(b,j*w);subplot(2,1,1);plot(w,abs(B./A))%幅度subplot(2,1,2);plot(w,angle(B./A))%相位w1=logspace(-1,1);%0.1到10對數分割50點。F=polyval(b,j*w1)./polyval(a,j*w1);subplot(2,1,1),loglog(w1,abs(F))雙對數。subplot(2,1,2);semilogx(w1,angle(F)),%y軸線性。留數法residue解線性微分方程●線性常微分方程的Laplace表示:Y(s)=B(s)/A(s)。其中設A(s)為n階多項式,B(s)為m階多項式。●[r,p,k]=residue(b,a):獲得3個輸出向量,p為單極點值,r是相應極點的留數。當n>m時,k為空矩陣,因為沒有整多項式。Y(s)=r(1)/s-p(1)+r(2)/s-p(2)+…+r(n)/s-p(n)時域表達:y(t)=r(1)expp(1)t+r(2)expp(2)t+…+r(n)expp(n)t留數法residue解線性微分方程求y’’’+5y’’+4y’+7y=3x’’+0.5x’+4x在x=u(t)階躍信號和x=δ(t)沖激信號激勵下的解。解:x(s)=1脈沖響應和x(s)=1/s階躍響應;①脈沖響應:a=[1,5,4,7];b=[3,0.5,4];%a向量、b向量。[r,p,k]=residue(b,a);%得到3個向量。t=0:0.2:10;%等分點,50個。y1=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t);plot(t,y1)②把a=[1,5,4,7,0],增加1階,可得階躍響應。MATLAB應用例子●單位脈沖、單位階躍、正弦連續、復指數信號的matlab表示。Clear,t0=0;tf=5;dt=0.05;t1=1;●單位脈沖:t=[t0:dt:tf];%在0~5之間的t1處有個沖激。st=length(t);
n1=floor((t1-t0)/dt);%t1對應樣本序號數。x1=zeros(1,st);%清零向量。x1(n1)=1/dt;%在t1處給出沖激。subplot(2,2,1),stairs(t,x1),axis([0,5,0,1.1/dt])●單位階躍:x2=[zeros(1,n1-1),ones(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論