matlab基本教学省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第1页
matlab基本教学省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第2页
matlab基本教学省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第3页
matlab基本教学省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第4页
matlab基本教学省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab3.30.ScreamLab,NCKU,Taiwan.1/67介紹2/67MATLAB主要提供以下功效可用於技術計算高級語言可對代碼、文件和數據進行管理開發環境能够按迭代方式探查、設計及求解問題交互式工具可用於線性代數、統計、傅立葉分析、篩選、優化以及數值積分等數學函數可用於可視化數據二維和三維圖形函數可用於構建自定義圖形用戶界面各種工具可將基於MATLAB算法與外部應用程序和語言(如C、C++、Fortran、Java、COM以及MicrosoftExcel)集成各種函數3/67ToolboxMATLAB一個主要特點是可擴展性。作為Simulink和其它全部MathWorks產品基礎,MATLAB能够通過附加工具箱(Toolbox)進行功效擴展,每一個工具箱就是實現特定功效函數集合。MathWorks提供工具箱分以下幾大類:數學和優化、統計和數據分析、控制系統設計和分析、信號處理和通訊、圖像處理、測試和測量、金融建模和分析、應用程序布署、數據庫連接和報表、分布式計算4/67基礎運算與流程控制5/67使用變數與基本運算普通數學符號運算在MATLAB命令視窗(CommandWindow)內提醒符號(>>)之後輸入運算式,並按入Enter鍵即可。比如:>>(5*2+3.5)/5ans=2.7000若不想讓MATLAB每次都顯示運算結果,只需在運算式最後加上分號(;)即可,比如:>>(5*2+3.5)/5;6/67向量與矩陣處理MATLAB中變數還可用來儲存向量(Vectors)及矩陣(Matrix),以進行各種運算,比如:>>s=[1352];%注意[]使用,及各數字間空白間隔>>t=2*s+1 t=37115

7/67矩陣各種處理MATLAB亦可取出向量中一個元素或一部份來做運算,比如:

>>t(3)=2%將向量t第三個元素更改為2t=3725>>t(6)=10 %在向量t加入第六個元素,其值為10t=3725010>>t(4)=[]%將向量t第四個元素刪除,[]代表空集合t=3720108/67建立大小為m×n矩陣在每一橫列結尾加上分號(;),比如:>>A=[1234;5678;9101112];%建立3×4矩陣A>>A %顯示矩陣A內容A=1234567891011129/67mxn矩陣各種處理之一>>A(2,3)=5%將矩陣A第二列、第三行元素值,改變為5A= 123456589101112>>B=A(2,1:3)%取出矩陣A第二橫列、第一至第三直行,並儲存成矩陣BB=56510/67mxn矩陣各種處理之二>>A=[AB']%將矩陣B轉置後、再以行向量併入矩陣AA=123455658691011125>>A(:,2)=[]%刪除矩陣A第二行(:代表全部橫列,[]代表空矩陣)A=1345558691112511/67mxn矩陣各種處理之三>>A=[A;4321]%在原矩陣A中,加入第四列A=134555869111254321>>A([14],:)=[]%刪除第一、四列(:代表全部直行,[]是空矩陣)A=558612/67惯用數學函數MATLAB是一個科學計算軟體,所以能够支援很多惯用到數學函數>>y=abs(x)%取x絕對值>>y=sin(x)%取x正弦值>>y=exp(x)%自然指數exp(x)>>y=log(x)%自然對數ln(x)MATLAB也支援複數運算,通常以i或j代表單位虛數13/67向量矩陣運算有一些函數是特別針對向量而設計>>y=min(x) %向量x極小值>>y=max(x)%向量x極大值>>y=mean(x) %向量x平均值>>y=sum(x)%向量x總和>>y=sort(x)%向量x排序14/67流程控制while迴圈(While-loop)while 條件式運算式;endif–else–end

if條件式運算式;else運算式;end

15/67繪圖指令16/67基本繪圖指令Plot:最基本繪圖指令對x座標及相對應y座標進行作圖範例:x=linspace(0,2*pi); %在0到2π間,等分取100個點y=sin(x); %計算x正弦函數值plot(x,y); %進行二維平面描點作圖17/67Plot基本繪圖-1linspace(0,2*pi)產生從0到2π且長度為100(預設值)向量xy是對應y座標只給定一個向量該向量則對其索引值(Index)作圖plot(y)和plot(1:length(y),y)會得到相同結果18/67Plot基本繪圖-2(I)一次畫出多條曲線將x及y座標依次送入plot指令範例:x=linspace(0,2*pi); %在0到2間,等分取100個點plot(x,sin(x),x,cos(x),x,sin(x)+cos(x));%進行多條曲線描點作圖19/67Plot基本繪圖-2(II)Plot(x,sin(x),x,cos(x),x,sin(x)+cos(x));畫出多條曲線時,會自動輪換曲線顏色

20/67Plot基本繪圖-3(I)若要以不一样線標(Marker)來作圖範例:x=linspace(0,2*pi); %在0到2間,等分取100個點plot(x,sin(x),'o',x,cos(x),'x',x,sin(x)+cos(x),'*');21/67Plot基本繪圖-3(II)22/67Plot基本繪圖-4(I)只給定一個矩陣y對矩陣y每一個行向量(ColumnVector)作圖範例:y=peaks; %產生一個49×49矩陣plot(y); %對矩陣y每一個行向量作圖23/67Plot基本繪圖-4(II)

peaks指令產生一個49×49矩陣,代表二維函數值plot(y)直接畫出49條直線類似於從側面觀看peaks函數24/67基本二維繪圖指令指令說明Plotx軸和y軸均為線性刻度(LinearScale)loglogx軸和y軸均為對數刻度(LogarithmicScale)semilogxx軸為對數刻度,y軸為線性刻度semilogyx軸為線性刻度,y軸為對數刻度plotyy畫出兩個刻度不一样y軸25/67圖形控制plot指令,能够接收一個控制字串輸入用以控制曲線顏色、格式及線標使用語法plot(x,y,‘CLM‘)C:曲線顏色(Colors)L:曲線格式(LineStyles)M:曲線所用線標(Markers)

26/67圖形控制範例-1(I)用黑色點線畫出正弦波每一資料點畫上一個小菱形範例:x=0:0.5:4*pi; %x向量起始與結束元素為0及4, %0.5為各元素相差值y=sin(x);plot(x,y,‘k:diamond’) %其中「k」代表黑色,「:」代表點 %線,而「diamond」則指定菱形為曲 %線線標27/67圖形控制範例-1(II)28/67plot指令曲線顏色

Plot指令曲線顏色字串曲線顏色RGB值b藍色(Blue)(0,0,1)c青藍色(Cyan)(0,1,1)g綠色(Green)(0,1,0)k黑色(Black)(0,0,0)m紫黑色(Magenta)(1,0,1)r紅色(Red)(1,0,0)w白色(1,1,1)y黃色(Yellow)(1,1,0)29/67Subplot

subplot在一個視窗產生多個圖形(圖軸)普通形式為subplot(m,n,p)將視窗分為m×n個區域下一個plot指令繪圖於第p個區域

p算法為由左至右,一列一列30/67圖軸控制範例-4(I)同時畫出四個圖於一個視窗中範例:x=0:0.1:4*pi;subplot(2,2,1);plot(x,sin(x)); %此為左上角圖形subplot(2,2,2);plot(x,cos(x)); %此為右上角圖形subplot(2,2,3);plot(x,sin(x).*exp(-x/5)); %此為左下角圖形subplot(2,2,4);plot(x,x.^2); %此為右下角圖形31/67圖軸控制範例-4(II)

Subplot(2,2,1)Subplot(2,2,3)Subplot(2,2,2)Subplot(2,2,4)32/67圖軸控制範例-5(I)長寬比(AspectRatio)普通圖軸長寬比是視窗長寬比可在axis指令後加不一样字串來修改範例:t=0:0.1:2*pi;x=3*cos(t);y=sin(t);subplot(2,2,1);plot(x,y);axisnormalsubplot(2,2,2);plot(x,y);axissquaresubplot(2,2,3);plot(x,y);axisequalsubplot(2,2,4);plot(x,y);axisequaltight33/67圖軸控制範例-5(II)

axisnormalaxisequalaxissquareaxissquaretight34/67改變圖軸長寬比指令改變当前圖軸長寬比指令需在plot指令之後呼叫才能發揮效用指令說明axisnormal使用預設長寬比(等於圖形長寬比)axissquare長寬百分比為1axisequal長寬百分比不變,但兩軸刻度一致axisequaltight兩軸刻度百分比一致,且圖軸貼緊圖形axisimage兩軸刻度百分比一致(適用於影像顯示)35/67加入說明文字在圖形或圖軸加入說明文字,增進整體圖形可讀性指令說明title圖形標題xlabelx軸說明ylabely軸說明zlabelz軸說明(適用於立體繪圖)legend多條曲線說明text在圖形中加入文字gtext使用滑鼠決定文字位置36/67說明文字範例-1(I)範例:subplot(1,1,1);x=0:0.1:2*pi;y1=sin(x);y2=exp(-x);plot(x,y1,'--*',x,y2,':o');xlabel('t=0to2\pi');ylabel('valuesofsin(t)ande^{-x}')title('FunctionPlotsofsin(t)ande^{-x}');legend('sin(t)','e^{-x}');37/67說明文字範例-1(II)legend指令畫出一小方塊,包含每條曲線說明「\」為特殊符號產生上標、下標、希臘字母、數學符號等遵照普通LaTex或TeX數學模式38/67說明文字範例-2(I)text指令使用語法:

text(x,y,string)x、y:文字起始座標位置string:代表此文字範例:x=0:0.1:2*pi;plot(x,sin(x),x,cos(x));text(pi/4,sin(pi/4),'\leftarrowsin(\pi/4)=0.707');text(5*pi/4,cos(5*pi/4),'cos(5\pi/4)=-0.707\rightarrow','HorizontalAlignment','right');39/67說明文字範例-2(II)

「HorizontalAlignment」及「right」指示text指令將文字向右水平靠齊40/67矩陣41/67矩陣索引或下標矩陣A中,位於第i橫列、第j直行元素可表示為A(i,j)i與j即是此元素下標(Subscript)或索引(Index)MATLAB中,全部矩陣內部表示法都是以直行為主一維向量A(i,j)和A(i+(j-1)*m)是完全一樣~m為矩陣A列數我們能够使用一維或二維下標來存取矩陣42/67矩陣索引或下標43/67矩陣索引或下標能够使用矩陣下標來進行矩陣索引(Indexing)A(4:5,2:3)-取出矩陣A第四、五橫列與二、三直行所形成部份矩陣A([914;1015])-用一維下標方式來達到同樣目标用冒號(:),取出一整列或一整行A(:,5)-取出矩陣A第五個直行

用end這個保留字來代表某一維度最大值A(:,end)-矩陣A最後一個直行能够直接刪除矩陣某一整個橫列或直行A(2,:)=[]–刪除A矩陣第二列A(:,[245])=[]-刪除A矩陣第二、四、五直行44/67特殊用途矩陣產生各種特殊用途矩陣好用指令:指令說明zeros(m,n)產生維度為m×n,構成元素全為0矩陣ones(m,n)產生維度為m×n,構成元素全為1矩陣eye(n)產生維度為n×n,對角線各元素全為1,其它各元素全為0單位矩陣pascal(m,n)產生維度為m×nPascal矩陣vander(m,n)產生維度為m×nVandermonde矩陣hilb(n)產生維度為n×nHilbert矩陣rand(m,n)產生[0,1]均勻分佈亂數矩陣,其維度為m×nrandn(m,n)產生µ=0,σ=1正規分佈亂數矩陣,其維度為m×nmagic(n)產生維度為n×n魔方陣,其各個直行、橫列及兩對角線元素和都相等45/67矩陣數學運算矩陣加減與普通純量(Scalar)加減類似相加或相減矩陣必需含有相同維度範例:

C= 13375824矩陣與純量能够直接進行加減,MATLAB

會直接將加減應用到每一個元素

>>A=[12321]+5

A= 67876A=[12345620];B=[1324];C=A+B46/67矩陣乘法與除法純量對矩陣乘或除,可比照普通寫法

>>A=[123,442]; >>C=A/3

>>B=2*A C= B= 41.0000147.3333 246884

欲進行矩陣相乘,必需確認第一個矩陣直行數目(ColumnDimension)必需等於第二個矩陣橫列數目(RowDimension)範例:

C= 345 6810矩陣除法,常藉由反矩陣或解線性方程式來達成A=[1;2];B=[3,4,5];C=A*B47/67矩陣次方運算矩陣次方運算,可由「^」來達成,但矩陣必需是方陣,其次方運算才有意義範例9-14:matrix14.m

B= 916767 679167 676791在「*」,「/」及「^」之前加上一個句點,MATLAB將會執行矩陣內「元素對元素」(Element-by-element)運算

A=magic(3);B=A^2A=[12;45];B=[2;3];C=A.*B %注意「*」前面句點D=A./B %注意「/」前面句點E=A.^2 %注意「^」前面句點48/67音訊讀寫與錄放49/67音訊基本介紹聲音訊號(AudioSignal)簡稱音訊,泛指由人耳聽到各種聲音訊號。音訊有些基本特質,可說明以下:

音量(Volume):聲音大小稱為音量,又稱為力度、強度(Intensity)或是能量(Energy)。音量越大,代表音訊波形震幅越大。音高(Pitch):聲音基本頻率(FundamentalFrequency)越高,代表音高越高(比如女高音歌聲);反之,聲音基本頻率越低,代表音高越低(比如男低音歌聲)。音色(Timbre):音訊波形在每個週期內變化,就形成了此音訊音色。不一样音色即代表不一样音訊內容,比如不一样字有不一样發音,或是每個歌手都有他們各自特色,這些都是由於音色不一样。50/67WAV檔案讀取範例之一比如,若要讀取檔案welcome.wav,畫出音訊波形並播放出此音訊,可使用以下程式:範例:[y,fs]=wavread('welcome.wav');sound(y,fs); %播放此音訊time=(1:length(y))/fs; %時間軸向量plot(time,y); %畫出時間軸上波形51/67WAV檔案讀取範例之一執行結果:波形圖52/67WAV檔案讀取範例之二若要知道welcome.wav取樣點是由多少個位元來表示,可使用[y,fs,nbits]=wavread(‘welcome.wav’)。若要知道音訊長度,則可使用length(y)/fs。以下範例能够印出音訊檔welcome.wav各種相關資訊:範例:fileName='welcome.wav';[y,fs,nbits]=wavread(fileName);fprintf('音訊檔案"%s"資訊:\n',fileName);fprintf('音訊長度=%g秒\n',length(y)/fs);fprintf('取樣頻率=%g取樣點/秒\n',fs);fprintf('解析度=%g位元/取樣點\n',nbits);53/67WAV檔案讀取範例之二範例執行結果:音訊檔案"welcome.wav"資訊:音訊長度=1.45134秒取樣頻率=11025取樣點/秒解析度=8位元/取樣點54/67WAV檔案讀取範例之三wavread也能够讀取雙聲道或立體聲(Stereo)音訊檔案,此時傳回變數為含有兩直行陣列,每一直行代表一個聲道音訊,比如:範例:fileName='flanger.wav';[y,fs]=wavread(fileName); %讀取音訊檔sound(y,fs); %播放音訊left=y(:,1); %左聲道音訊right=y(:,2); %右聲道音訊subplot(2,1,1),plot((1:length(left))/fs,left);subplot(2,1,2),plot((1:length(right))/fs,right);55/67WAV檔案讀取範例之三此範例會讀取雙聲道音訊檔flanger.wav,播放此雙聲道音訊,並畫出兩個聲道音訊波形以下:56/67WAV檔案讀取範例之四假如音訊檔案很大,無法一次讀入記憶體,我們也能够使用wavread來讀出音訊檔其中一部份,比如:範例:[y,fs]=wavread('welcome.wav',[40015000]);%讀取第4001至5000點figure;plot(y)57/67WAV檔案讀取範例之四畫出之圖形以下:58/67聲音訊號播放一旦我們能够讀入wav檔案,就能够對聲音訊號進行各種處理,比如增大或減小音量、提升或降低音高、消除雜訊等。要確認處理後聲音訊號是否符合所需,就要能夠把音訊直接透過PC喇叭播放出來,本節就是要介紹怎样使用MATLAB來進行音訊播放。59/67WAV檔案播放範例之一在前一節中,我們已經知道怎样讀wav檔案,一旦MATLAB讀入音訊資料,並將之設定成工作空間中變數後,我們就能够使用wavplay指令來直接播放此變數。比如:範例:loadhandel.mat %載入儲存於handel.mat音訊wavplay(y,Fs); %播放此音訊60/67WAV檔案播放範例之二我們在第一節提到過,聲音音量是由聲波震幅來決定,所以我們可藉由震幅大小來改變音量,比如:範例:[y,fs]=wavread('welcome.wav');wavplay(1*y,fs,'sync'); %播放

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论