版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。lab01_Matlab平臺的使用_記得帶耳機_2012年-Matlab平臺的使用1.總論Matlab是信號處理中功能強大且廣泛使用的工具。本實驗的主要目標(biāo)是使你們熟悉使用Matlab。我們假定你們有過其他某種語言的編程經(jīng)驗,應(yīng)該已經(jīng)了解變量,循環(huán)和函數(shù)等基本概念。這里介紹一下Matlab的基本編程結(jié)構(gòu)。本實驗的三個目標(biāo):1.學(xué)習(xí)基本的Matlab命令和語法,包括“幫助”系統(tǒng)2.學(xué)習(xí)編寫你自己的Matlab的腳本文件,并像命令一樣運行它們3.學(xué)習(xí)一點Matlab的高級編程技術(shù),例如向量化1.1要提交的內(nèi)
2、容提交的實驗報告要求回答所有下面被方框框住的問題,還有方框部分要求提交的Matlab代碼。實驗報告要求包括:1.姓名,學(xué)號,日期和實驗報告的題名。2.一兩句介紹本實驗的內(nèi)容3.所有方框部分的回答和代碼,答案要求簡潔清楚4.幾句結(jié)論,重點談?wù)勀阌龅降膯栴}以及怎么解決的,或者你用了什么較好的方法,或者你有什么收獲和感受實驗報告文檔名為“班號-學(xué)號-姓名”。只交電子版。一周內(nèi),提交給各班學(xué)習(xí)委員,學(xué)習(xí)委員再打包提交給我,2.初識Matlab1.啟動Matlab,運行Matlab的幫助。在命令窗口輸入“doc”,或在菜單中選“help”。2.在命令窗口中,試試:helpwinhelpwinplothe
3、lpwincolon%-aVERYIMPORTANTnotationhelpwinopshelpwinzeroshelpwinoneslookforfilter%-keywordsearch3.運行Matlab的demo:在命令窗口輸入“demo”4.把Matlab當(dāng)計算器用,試試:pi*pi-10sin(pi/4)ans2%-ansholdsthelastresult5.在Matlab中給變量賦值,試試:xx=sin(pi/5);cos(pi/5)%-assignedtowhat?yy=sqrt(1-xx*xx)ans注意觀察語句末尾有分號和無分號有什么差別。6.Matlab中的復(fù)數(shù)運算的基
4、本操作,試試:zz=3+4i,ww=-3+4jreal(zz),imag(zz)abs(zz,ww)%-Vectorconstructorconj(zz+ww)angle(zz)exp(j*pi)exp(j*pi/4,0,-pi/4)3.再識Matlab3.1Matlab數(shù)組索引(a).冒號的含義試試如下命令的結(jié)果:jkl=0:6jkl=2:4:17jkl=99:-1:88ttt=2:(1/9):4tpi=pi*0:0.1:2;%注意這里有分號(b).從向量提取數(shù)字和或插入數(shù)字,思考如下xx的定義:xx=zeros(1,3),linspace(0,1,5),ones(1,4)xx(4:6)si
5、ze(xx)length(xx)xx(2:2:length(xx)xx(2:2:end)解釋以上代碼最后4行的結(jié)果(c).觀察如下賦值的結(jié)果:yy=xx;yy(4:6)=pi*(1:3)現(xiàn)在寫一條語句,xx用(b)中定義的方法,把xx的偶數(shù)索引的元素(即xx(2),xx(4)等)的值替換為常數(shù)。使用向量替換,不要用循環(huán)。xx(2:2:length(xx)=pipi3.2Matlab腳本文件(a)看看關(guān)于向量的實驗。把向量看作一個數(shù)字集合,試試:xk=cos(pi*(0:11)/4)%-comment:computecosines解釋一下余弦函數(shù)的值是怎樣存儲在向量xk中的。xk(1)是什么意思
6、?有定義xk(0)嗎?注:語句后沒有分號,所以語句會把xk的計算結(jié)果依次顯示在命令窗口,在百分號后面的文字是注釋,可以忽略。(b)Matlab中可以寫循環(huán),但是這不是最有效率的解決辦法。盡量避免循環(huán),并使用冒號會提高效率。下面的代碼是用一個循環(huán)來計算余弦函數(shù)的值的:yy=;%-initializetheyyvectortobeemptyfork=-5:5yy(k+6)=cos(k*pi/3)endyy解釋為什么需要寫yy(k+6)。如果用yy(k)會發(fā)生什么?因為括號里面的數(shù)值必須大于0,如果用yy(k),k從-5開始到5,軟件會提示錯誤.不使用循環(huán),而用3.1的方法,利用冒號,重新實現(xiàn)這個功
7、能。(c)Matlab中實數(shù)和復(fù)數(shù)的繪制都很容易?;纠L圖命令繪制向量yy和向量xx的關(guān)系,試試:xx=-3-1013;yy=xx.*xx-3*xx;plot(xx,yy)zz=xx+yy*sqrt(-1)plot(zz)%-complexvalues:plotimagvs.real在命令窗口輸入“helpwinarith”,了解當(dāng)xx是一個向量時,操作xx.*xx是如何工作的。當(dāng)xx是一個矩陣時,操作xx.*xx又是如何工作的。當(dāng)你沒把握某個命令時,可隨時使用幫助系統(tǒng)。(d)使用Matlab的編譯器創(chuàng)建腳本文件,命名為mylab1.m,文件內(nèi)容如下:clearall;closeall;tt=
8、-1:0.01:1;xx=cos(5*pi*tt);zz=1.4*exp(j*pi/2)*exp(j*5*pi*tt);plot(tt,xx,b-,tt,real(zz),r-)%-plotasinusoidgridontitle(TESTPLOTofaSINUSOID)xlabel(TIME(sec)解釋為什么real(zz)的圖形是一個正弦曲線。它的相位和幅度是多少?由所繪圖形的時移量計算相位。ZZ的實部應(yīng)該是一個余弦曲線,但是因為初相位是/2,所以變成了正弦曲線.相位是/2,幅度是1.4.(e)在命令窗口輸入“mylab1”即可運行上述m文件,即mylab1%-willrunthecom
9、mandsinthefiletypemylab1%-willtypeoutthecontentsof%mylab1.mtothescreen3.3Matlab與聲音相關(guān)的函數(shù)命令這一節(jié)練習(xí)是關(guān)于聲音信號的,所以需要帶耳機來機房聽效果。(a)運行Matlab的聲音demo:在命令窗口輸入“xpsound”。你可以聽到多種聲音,并可以查看對應(yīng)的時間序列,功率譜密度和聲譜圖(聲譜圖詳見7.3)。(b)現(xiàn)在在Matlab中生成一個音調(diào)(例如正弦),用soundsc()命令soundsc(xx,fs)函數(shù)需用兩個參數(shù),,xx是播放文件的數(shù)據(jù)的向量,fs是播放樣本的采樣率。另外,soundsc(xx,fs
10、)會自動把xx的值尺度變化成1到1之間,然后調(diào)用sound(xx,fs)播放信號。聽一聽在3.2(d)的第2行和第3行創(chuàng)建了一個向量xx為2.5Hz的正弦序列。而你們要生成的正弦信號的頻率為2000Hz,時長為0.9秒,采樣率fs為11025個樣本秒。采樣率說明了采樣點之間的時間間隔,所以時間向量應(yīng)定義為:tt=0:(1/fs):dur;其中fs為采樣率,dur為時長(以秒為單位)??梢栽趲椭到y(tǒng)中查找sound()和soundsc()了解它們的用法和含義。那么,你們的tt向量的長度(即樣本數(shù))是多少?4.用Matlab處理正弦信號在實驗報告中要包括本節(jié)的圖形和實驗結(jié)果描述。寫一個Matlab
11、的m文件來完成步驟(a)到步驟(d)。你們的實驗報告也要包括這個m文件的代碼。(a)生成一個時間向量tt,需要覆蓋下面的(b)中頻率為4000Hz的正弦信號的兩個周期。tt的定義方式使用3.2(d)的方式。如果我們使用T表示正弦的周期,定義向量tt的開始時間為T,結(jié)束時間為T,那兩個周期就會包括tt=0。最后,確保你們正弦波的每個周期有至少25個樣本。也就是說,當(dāng)你們使用冒號操作符定義時間變量時,要使增量足夠小,才能保證每個周期可以產(chǎn)生至少25個樣本。(b)生成以下兩個4000Hz的正弦序列:x1(t)=A1cos(2(4000)(ttm1)x2(t)=A2cos(2(4000)(ttm2)其
12、中A1是你的年齡,A2=1.2A1,tm1=(37.2/M)T,tm2=(41.3/D)T,這里M和D分別是你生日的月和日,T是周期繪制以上兩個信號在-TtT的圖形。為了輸出下面(d)的要求,使用subplot(3,1,1)和subplot(3,1,2)來使圖在一個圖形窗口內(nèi),詳見helpwinsubplot一般用法是:subplot(2,1,2);plot(xx);(c)創(chuàng)建第3個正弦信號為x3(t)=x1(t)+x2(t).在Matlab中,這表示把兩個正弦向量中的值對應(yīng)相加。繪制x3(t)在-TtT的圖形,使用subplot(3,1,3)繪圖。(d)對每個圖都添加一個圖名,圖名都要包含你
13、的姓名,用title函數(shù)clearall;closeall;tt=-0.00025:0.00001:0.00025;x1=20*cos(8000*pi*tt-(37.2/4)*2*pi);x2=24*cos(8000*pi*tt+(41.3/3)*2*pi);x3=x1+x2;subplot(3,1,1)plot(tt,x1)title(楊澤雄1)subplot(3,1,2)plot(tt,x2)title(楊澤雄2)subplot(3,1,3)plot(tt,x3)title(楊澤雄3)xlabel(time(sec)詳見helpwintitle,helpwinsubplot4.1復(fù)數(shù)幅度用
14、一條語句生成以上正弦信號x1(t)的值,可以使用復(fù)數(shù)幅度表示方法:x1(t)=ReXejt其中X和w為某個常數(shù)。5.復(fù)指數(shù)簡介本節(jié)目標(biāo)是讓大家熟悉復(fù)數(shù),并了解怎么使用它們表示正弦信號(例如x(t)=Acos(t+)為復(fù)指數(shù)形式(例如z(t)=Aejejt),方法如下所示:x(t)=Acos(t+)=ReAejejt5.2Matlab中的復(fù)數(shù)Matlab可用于計算復(fù)值式子,并可以向量顯示結(jié)果,以下是一些Matlab的復(fù)數(shù)操作符:conj復(fù)共軛abs幅度angle以弧度為單位的角度或相位real實部imag虛部i,j已預(yù)定義為x=3+4iexp(j*theta)復(fù)指數(shù)函數(shù)ej每個函數(shù)都以向量或矩陣
15、作為輸入?yún)⒘俊W⒁猓篗atlab中沒有mag()和phase()函數(shù)。5.3向量化Matlab最重要的部分就是矩陣向量語法。大多數(shù)情況下,循環(huán)都可以用向量操作代替,因為形如exp()和cos()等函數(shù)都被定義為向量輸入,例如cos(vv)=cos(vv(1),cos(vv(2),cos(vv(3),.cos(vv(N)其中vv是N個元素的行向量。向量化可用于簡化代碼。如果有如下代碼來繪制某個信號:M=200;fork=1:Mx(k)=k;y(k)=cos(0.001*pi*x(k)*x(k);endplot(x,y,ro-)你可以把循環(huán)替換掉,而只用如下3行代碼即可:M=200;y=cos(0
16、.001*pi*(1:M).*(1:M);plot(1:M,y,ro-)用這種向量化的方法編寫23行代碼完成以下Matlab代碼,不使用循環(huán)。(注:當(dāng)xx是向量時,xx*xx和xx.*xx是不同的)N=(1:200)/50;rk=sqrt(N.*N+2.25);plot(N,real(exp(j*2*pi*rk),mo-)%-makeaplotofaweirdsignalN=200;fork=1:Nxk(k)=k/50;rk(k)=sqrt(xk(k)*xk(k)+2.25);sig(k)=exp(j*2*pi*rk(k);endplot(xk,real(sig),mo-)5.4函數(shù)函數(shù)是一種
17、特別的M-文件,可以接受輸入(矩陣或向量),也可以得到輸出。關(guān)鍵詞function必須是文件的第一個詞,并且定義了函數(shù),M-文件的第一行定義函數(shù)如何傳遞輸入和輸出參量。文件擴展名必須使用小寫的“m”,例如my_func.m。如下函數(shù)有一些小錯誤,請找找錯在哪里:(至少有3處錯誤)matlabmfilexx,tt=badcos(ff,dur)%BADCOSFunctiontogenerateacosinewave%usage:%xx=badcos(ff,dur)%ff=desiredfrequencyinHz%dur=durationofthewaveforminseconds%tt=0:1/(
18、100*ff):dur;%-gives100samplesperperiodbadcos=cos(2*pi*freeq*tt);錯誤有:第一個詞必須是“function”。而且“freeq”在使用前沒有定義。最后,第一行指明要“xx”作輸出,因此“xx”需要在函數(shù)體中出現(xiàn)在至少一個賦值行的左邊。正確的函數(shù)寫法應(yīng)該是:functionxx,tt=goodcos(ff,dur)tt=0:1/(100*ff):dur;%-gives100samplesperperiodxx=cos(2*pi*ff*tt);可在命令窗口輸入函數(shù)的文件名(注意不是函數(shù)名)來調(diào)用它(也可以在另一個m文件調(diào)用它),例如,如
19、果以上goodcos函數(shù)的文件名為testcos.m,且ff=1,dur=10,則調(diào)用時應(yīng)輸入testcos(1,10)。你可以嘗試一下,如果你輸入goodcos(1,10),matlab會有什么反應(yīng)。6.復(fù)指數(shù)6.1生成正弦信號的M-文件寫一個可以生成單一正弦信號x(t)=Acos(t+)的函數(shù),使用4個輸入?yún)⒘浚悍華,頻率,相位和時長dur。函數(shù)應(yīng)當(dāng)返回兩個輸出參量:正弦信號的值x和對應(yīng)的時間t。確保函數(shù)生成的正弦信號在每個周期有20個值,函數(shù)名為one_cos()。提示:可借鑒上面的goodcos()函數(shù)。繪制你們的one_cos()函數(shù),參數(shù)選為:A=95,=200弧度秒,=/5弧度
20、,時長為0.025秒。推導(dǎo)所繪圖形的周期和相位是否正確。如果周期以毫秒為單位是多少?functionxx,tt=onecos(A,w,a,dur)tt=0:2*pi/(20*w):dur;xx=A*cos(w*tt+a);7線性調(diào)頻脈沖chirp線性調(diào)頻脈沖chirp信號(或線性掃頻信號)是一個正弦信號,其頻率從一個初值線性變化到終值。Chirp信號的表達式可寫為:x(t)=cos(t),其中(t)=2t2+2f0t+對(t)求導(dǎo)后得到隨時間線性變化的瞬時頻率:fi(t)=2t+f0fi(t)的斜率等于2,截距為f0。如果信號于t=0開始,f0也是初始頻率。這種時變角度造成的頻率變化稱為頻率調(diào)
21、制。這類信號是頻率調(diào)制FM信號的一個例子。更一般的,我們通常考慮它們?yōu)楦笠活惖慕嵌日{(diào)制信號。最后,因為頻率的線性變化可以生成一個類似汽笛聲或鳥叫聲(chirp),所以線性FM信號也可以稱為chirp信號。7.1chirp信號的Matlab合成方法以下的Matlab代碼可以合成一個chirp信號fsamp=11025;dt=1/fsamp;dur=1.8;tt=0:dt:dur;psi=2*pi*(100+200*tt+500*tt.*tt);xx=real(7.7*exp(j*psi);soundsc(xx,fsamp);(a)確定合成信號的總時長(秒),確定tt向量的長度(樣本數(shù))(b)在
22、Matlab中,只能合成離散時間信號,所以對于chirp信號,我們處理為:x(tn)=Acos(2tn2+2f0tn+)其中,tn=nTs表示離散時間值。在以上的Matlab代碼中,tn的值是多少?A,f0和的值是多少?(c)確定以上Matlab代碼合成的頻率的范圍(Hz為單位)。手繪瞬時頻率隨時間的變化情況。聽到的最小頻率和最大頻率是多少?(d)聽聽信號的頻率是上升還是下降(使用soundsc())。注意soundsc()需要知道信號創(chuàng)建時的采樣率。詳見幫助。7.2chirp的函數(shù)使用以下代碼來寫一個可以合成chirp信號的函數(shù),根據(jù)注釋的提示編寫。functionxx,tt=mychirp
23、(f1,f2,dur,fsamp)%MYCHIRPgeneratealinear-FMchirpsignal%usage:xx=mychirp(f1,f2,dur,fsamp)%f1=startingfrequency%f2=endingfrequency%dur=totaltimeduration%fsamp=samplingfrequency(OPTIONAL:defaultis11025)%xx=(vectorof)samplesofthechirpsignal%tt=vectoroftimeinstantsfort=0tot=dur%if(nargin4)%-Allowoptionalinputargumentfsamp=11025;end請生成一個chirp,其頻率起始于2500Hz,終止于500Hz。時長應(yīng)當(dāng)為1.5秒。聽聽你的chirp。7.3聲譜圖考慮信號的頻譜非常有用。信號頻譜是信號所含頻率的表示方式。固定單一頻率的正弦信號的頻譜包含兩個成分,一個在2f0,一個在-2f0。對于更復(fù)雜的信號,頻譜會非常有趣,F(xiàn)M信號的頻譜可以認(rèn)為是時變的。一種表示時變頻譜信號的方式就是聲譜圖。聲譜圖可通過估計信號短時的頻率成分得到。把頻譜在每個部分的幅度
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度貨運司機勞動合同模板(含績效考核)
- 二零二五年度學(xué)校教師學(xué)生國際交流與合作聘用合同3篇
- 二零二五年度信息技術(shù)產(chǎn)品軟件售后服務(wù)合同書模板2篇
- 2025年度個人法律咨詢委托書范本4篇
- 二零二五年度廚房電氣設(shè)備安裝與維護承包協(xié)議4篇
- 2025版實習(xí)合同模板:實習(xí)期間解約與補償3篇
- 二零二五版舊機動車交易車輛售后配件供應(yīng)合同3篇
- 2025版實習(xí)期員工勞動合同-實習(xí)期間合同解除與續(xù)簽3篇
- 珠??萍紝W(xué)院《賈平凹文學(xué)創(chuàng)作研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度商業(yè)寫字樓租賃合同樣本
- 運動技能學(xué)習(xí)與控制課件第十一章運動技能的練習(xí)
- 蟲洞書簡全套8本
- 射頻在疼痛治療中的應(yīng)用
- 四年級數(shù)學(xué)豎式計算100道文檔
- “新零售”模式下生鮮電商的營銷策略研究-以盒馬鮮生為例
- 項痹病辨證施護
- 職業(yè)安全健康工作總結(jié)(2篇)
- 懷化市數(shù)字經(jīng)濟產(chǎn)業(yè)發(fā)展概況及未來投資可行性研究報告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會
- 彈簧分離問題經(jīng)典題目
評論
0/150
提交評論