lab01-Matlab平臺(tái)的使用-記得帶耳機(jī)-2014(DOC)_第1頁(yè)
lab01-Matlab平臺(tái)的使用-記得帶耳機(jī)-2014(DOC)_第2頁(yè)
lab01-Matlab平臺(tái)的使用-記得帶耳機(jī)-2014(DOC)_第3頁(yè)
lab01-Matlab平臺(tái)的使用-記得帶耳機(jī)-2014(DOC)_第4頁(yè)
lab01-Matlab平臺(tái)的使用-記得帶耳機(jī)-2014(DOC)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Matlab平臺(tái)的使用1.總論Matlab是信號(hào)處理中功能強(qiáng)大且廣泛使用的工具。本實(shí)驗(yàn)的主要目標(biāo)是使你們熟悉使用Matlab。我們假定你們有過其他某種語(yǔ)言的編程經(jīng)驗(yàn),應(yīng)該已經(jīng)了解變量,循環(huán)和函數(shù)等基本概念。這里介紹一下Matlab的基本編程結(jié)構(gòu)。本實(shí)驗(yàn)的三個(gè)目標(biāo):1.學(xué)習(xí)基本的Matlab命令和語(yǔ)法,包括“幫助”系統(tǒng)2.學(xué)習(xí)編寫你自己的Matlab的腳本文件,并像命令一樣運(yùn)行它們3.學(xué)習(xí)一點(diǎn)Matlab的高級(jí)編程技術(shù),例如向量化2.初識(shí)Matlab1.啟動(dòng)Matlab,運(yùn)行Matlab的幫助。在命令窗口輸入“doc”,或在菜單中選“help”。2.在命令窗口中,試試:helpwinhelpwinplothelpwincolon%<---aVERYIMPORTANTnotationhelpwinopshelpwinzeroshelpwinoneslookforfilter%<---keywordsearch3.運(yùn)行Matlab的demo:在命令窗口輸入“demo”4.把Matlab當(dāng)計(jì)算器用,試試:pi*pi-10sin(pi/4)ans?2%<---"ans"holdsthelastresult5.在Matlab中給變量賦值,試試:xx=sin(pi/5);cos(pi/5)%<---assignedtowhat?yy=sqrt(1-xx*xx)ans注意觀察語(yǔ)句末尾有分號(hào)和無(wú)分號(hào)有什么差別。6.Matlab中的復(fù)數(shù)運(yùn)算的基本操作,試試: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.再識(shí)Matlab3.1Matlab數(shù)組索引(a).冒號(hào)的含義試試如下命令的結(jié)果:jkl=0:6jkl=2:4:17jkl=99:-1:88ttt=2:(1/9):4tpi=pi*[0:0.1:2];%注意這里有分號(hào)(b).從向量提取數(shù)字和/或插入數(shù)字,思考如下xx的定義:xx=[zeros(1,3),linspace(0,1,5),ones(1,4)]xx(4:6)size(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)在寫一條語(yǔ)句,xx用(b)中定義的方法,把xx的偶數(shù)索引的元素(即xx(2),xx(4)等)的值替換為常數(shù)。使用向量替換,不要用循環(huán)。3.2Matlab腳本文件(a)看看關(guān)于向量的實(shí)驗(yàn)。把向量看作一個(gè)數(shù)字集合,試試:xk=cos(pi*(0:11)/4)%<---comment:computecosines解釋一下余弦函數(shù)的值是怎樣存儲(chǔ)在向量xk中的。xk(1)是什么意思?有定義xk(0)嗎?注:語(yǔ)句后沒有分號(hào),所以語(yǔ)句會(huì)把xk的計(jì)算結(jié)果依次顯示在命令窗口,在百分號(hào)%后面的文字是注釋,可以忽略。(b)Matlab中可以寫循環(huán),但是這不是最有效率的解決辦法。盡量避免循環(huán),并使用冒號(hào)會(huì)提高效率。下面的代碼是用一個(gè)循環(huán)來(lái)計(jì)算余弦函數(shù)的值的:yy=[];%<---initializetheyyvectortobeempty復(fù)指數(shù)形式(例如z(t)

=

Aejejt),方法如下所示:x(t)

=

Acos(ωt

+

φ)

=

Re{Aejejt}

5.2Matlab中的復(fù)數(shù)Matlab可用于計(jì)算復(fù)值式子,并可以向量顯示結(jié)果,以下是一些Matlab的復(fù)數(shù)操作符:conj—復(fù)共軛abs—幅度

angle—以弧度為單位的角度或相位

real

–實(shí)部imag—虛部

i,j

–已預(yù)定義為x=3+4i

exp(j*theta)–

復(fù)指數(shù)函數(shù)

ejθ

每個(gè)函數(shù)都以向量或矩陣作為輸入?yún)⒘?。注意:Matlab中沒有

mag()和phase()

函數(shù)。5.3向量化Matlab最重要的部分就是矩陣-向量語(yǔ)法。大多數(shù)情況下,循環(huán)都可以用向量操作代替,因?yàn)樾稳鏴xp()

和cos()

等函數(shù)都被定義為向量輸入,例如cos(vv)=[cos(vv(1)),cos(vv(2)),cos(vv(3)),...cos(vv(N))]其中vv是N個(gè)元素的行向量。向量化可用于簡(jiǎn)化代碼。如果有如下代碼來(lái)繪制某個(gè)信號(hào):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.001*pi*(1:M).*(1:M));plot(1:M,y,'ro-')用這種向量化的方法編寫2-3行代碼完成以下Matlab代碼,不使用循環(huán)。(注:當(dāng)xx是向量時(shí),xx*xx和xx.*xx是不同的)%---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ù)是一種特別的M-文件,可以接受輸入(矩陣或向量),也可以得到輸出。關(guān)鍵詞function必須是文件的第一個(gè)詞,并且定義了函數(shù),M-文件的第一行定義函數(shù)如何傳遞輸入和輸出參量。文件擴(kuò)展名必須使用小寫的“m”,例如my_func.m。如下函數(shù)有一些小錯(cuò)誤,請(qǐng)找找錯(cuò)在哪里:(至少有3處錯(cuò)誤)matlabmfile[xx,tt]=badcos(ff,dur)%BADCOSFunctiontogenerateacosinewave%usage:%xx=badcos(ff,dur)%ff=desiredfrequencyinHz%dur=durationofthewaveforminseconds%tt=0:1/(100*ff):dur;%--gives100samplesperperiodbadcos=cos(2*pi*freeq*tt);錯(cuò)誤有:第一個(gè)詞必須是“function”。而且“freeq”在使用前沒有定義。最后,第一行指明要“xx”作輸出,因此“xx”需要在函數(shù)體中出現(xiàn)在至少一個(gè)賦值行的左邊。正確的函數(shù)寫法應(yīng)該是:function[xx,tt]=goodcos(ff,dur)tt=0:1/(100*ff):dur;%--gives100samplesperperiodxx=cos(2*pi*ff*tt);可在命令窗口輸入函數(shù)的文件名(注意不是函數(shù)名)來(lái)調(diào)用它(也可以在另一個(gè)m文件調(diào)用它),例如,如果以上goodcos函數(shù)的文件名為testcos.m,且ff=1,dur=10,則調(diào)用時(shí)應(yīng)輸入testcos(1,10)。你可以嘗試一下,如果你輸入goodcos(1,10),matlab會(huì)有什么反應(yīng)。6.復(fù)指數(shù)6.1生成正弦信號(hào)的M-文件寫一個(gè)可以生成單一正弦信號(hào)x(t)

=

Acos(ωt+φ)的函數(shù),使用4個(gè)輸入?yún)⒘浚悍華,頻率,相位和時(shí)長(zhǎng)dur。函數(shù)應(yīng)當(dāng)返回兩個(gè)輸出參量:正弦信號(hào)的值x和對(duì)應(yīng)的時(shí)間t。確保函數(shù)生成的正弦信號(hào)在每個(gè)周期有20個(gè)值,函數(shù)名為one_cos()。提示:可借鑒上面的goodcos()函數(shù)。繪制你們的one_cos()函數(shù),參數(shù)選為:A=95,=200弧度/秒,=/5弧度,時(shí)長(zhǎng)為0.025秒。推導(dǎo)所繪圖形的周期和相位是否正確。如果周期以毫秒為單位是多少?7線性調(diào)頻脈沖chirp線性調(diào)頻脈沖chirp信號(hào)(或線性掃頻信號(hào))是一個(gè)正弦信號(hào),其頻率從一個(gè)初值線性變化到終值。Chirp信號(hào)的表達(dá)式可寫為:x(t)=cos(ψ(t)),其中ψ(t)

=

μ

t2+

f0

t

+

φ

對(duì)ψ(t)

求導(dǎo)后得到隨時(shí)間線性變化的瞬時(shí)頻率:fi

(t)

=

2μt

+

f0

fi

(t)

的斜率等于

2μ,截距為f0。如果信號(hào)于t=0開始,f0也是初始頻率。這種時(shí)變角度造成的頻率變化稱為頻率調(diào)制。這類信號(hào)是頻率調(diào)制FM信號(hào)的一個(gè)例子。更一般的,我們通??紤]它們?yōu)楦笠活惖慕嵌日{(diào)制信號(hào)。最后,因?yàn)轭l率的線性變化可以生成一個(gè)類似汽笛聲或鳥叫聲(chirp),所以線性FM信號(hào)也可以稱為chirp信號(hào)。7.1chirp信號(hào)的Matlab合成方法以下的Matlab代碼可以合成一個(gè)chirp信號(hào)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)確定合成信號(hào)的總時(shí)長(zhǎng)(秒),確定tt向量的長(zhǎng)度(樣本數(shù))(b)在Matlab中,只能合成離散時(shí)間信號(hào),所以對(duì)于chirp信號(hào),我們處理為:x(tn)=Acos(

μ

tn2+

f0

tn+

φ)其中,tn=nTs表示離散時(shí)間值。在以上的Matlab代碼中,tn的值是多少?A,,f0和的值是多少?(c)確定以上Matlab代碼合成的頻率的范圍(Hz為單位)。手繪瞬時(shí)頻率隨時(shí)間的變化情況。聽到的最小頻率和最大頻率是多少?(d)聽聽信號(hào)的頻率是上升還是下降(使用soundsc())。注意soundsc()需要知道信號(hào)創(chuàng)建時(shí)的采樣率。詳見幫助。7.2chirp的函數(shù)使用以下代碼來(lái)寫一個(gè)可以合成chirp信號(hào)的函數(shù),根據(jù)注釋的提示編寫。function[xx,tt]=mychirp(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(nargin<4)%--Allowoptionalinputargumentfsamp=11025;end請(qǐng)生成一個(gè)chirp,其頻率起始于2500Hz,終止于500Hz。時(shí)長(zhǎng)應(yīng)當(dāng)為1.5秒。聽聽你的chirp。7.3聲譜圖考慮信號(hào)的頻譜非常有用。信號(hào)頻譜是信號(hào)所含頻率的表示方式。固定單一頻率的正弦信號(hào)的頻譜包含兩個(gè)成分,一個(gè)在2f0,一個(gè)在-2f0。對(duì)于更復(fù)雜的信號(hào),頻譜會(huì)非常有趣,F(xiàn)M信號(hào)的頻譜可以認(rèn)為是時(shí)變的。一種表示時(shí)變頻譜信號(hào)的方式就是聲譜圖。聲譜圖可通過估計(jì)信號(hào)短時(shí)的頻率成分得到。把頻譜在每個(gè)部分的幅度畫成關(guān)于頻率和時(shí)間的二維的密度或顏色,即可得到一幅聲譜圖。關(guān)于聲譜圖需要知道:1.Matlab的函數(shù)specgram可計(jì)算聲譜圖。詳見幫助,了解語(yǔ)法和所需參量。2.聲譜圖是數(shù)值計(jì)算出來(lái)的,僅提供一個(gè)信號(hào)的時(shí)變頻率成分的估計(jì)。3.一般調(diào)用形式為specgram(xx,1024,fs)。第二個(gè)參量是窗長(zhǎng)度如果第2項(xiàng)為“空矩陣”,則默認(rèn)為使用256如果第2項(xiàng)為“空矩陣”,則默認(rèn)為使用256通常窗長(zhǎng)度選為2的冪次,因?yàn)橛昧薋FT計(jì)算。為了看看聲譜圖是什么樣,可以在命令窗口運(yùn)行如下代碼:

fs=8000;xx=cos(3000*pi*(0:1/fs:0.5));specgram(xx,1024,fs);注意聲譜圖在正弦的頻率處有一條水

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論