第二章 matlab程序設(shè)計(jì)和m文件的編寫(xiě)_第1頁(yè)
第二章 matlab程序設(shè)計(jì)和m文件的編寫(xiě)_第2頁(yè)
第二章 matlab程序設(shè)計(jì)和m文件的編寫(xiě)_第3頁(yè)
第二章 matlab程序設(shè)計(jì)和m文件的編寫(xiě)_第4頁(yè)
第二章 matlab程序設(shè)計(jì)和m文件的編寫(xiě)_第5頁(yè)
已閱讀5頁(yè),還剩255頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章MATLAB基本程序設(shè)計(jì)

MATLAB程序設(shè)計(jì)方式:■草稿紙方式(命令行方式)■基本程序設(shè)計(jì)(結(jié)構(gòu)程序設(shè)計(jì))■圖形界面程序設(shè)計(jì)(面向?qū)ο螅㎝ATLAB基本程序設(shè)計(jì)要點(diǎn):■MATLAB的程序文件名以m作為擴(kuò)展名■通過(guò)Edit命令進(jìn)入m文件的編輯

■一個(gè)完整的應(yīng)用程序由主程序和函數(shù)組成第2章第二講MATLAB基本程序設(shè)計(jì)

主要內(nèi)容(4)■M文件■輸入輸出語(yǔ)句■程序控制語(yǔ)句■程序的調(diào)試2.1M文件一、主程序(腳本)1、一個(gè)主程序的例子編寫(xiě)一個(gè)雙音頻程序,顯示某個(gè)鍵的波形:(Hz)120913361477697123770456852789941*0#2.1M文件設(shè)主程序文件名為mydt.m%產(chǎn)生一個(gè)雙音頻

fs=8000;t=(0:1/fs:0.2);f1=697;f2=1209;%鍵1對(duì)應(yīng)的兩個(gè)頻率y=sin(2*pi*f1*t)+sin(2*pi*f2*t);plot(t,y);wavplay(y,fs)2.1M文件2、主程序的組成▓幫助段(帶注釋符%的行)▓程序段

如果有第一行(function),則主程序?yàn)楹瘮?shù)文件形式

,變量不保存到工作區(qū)中,為局部變量.

如果沒(méi)有第一行(function),則主程序?yàn)槊钗募问?,相?dāng)于各命令行的集合。變量保存到工作區(qū)中.2.1M文件3、幾點(diǎn)說(shuō)明▓文件名不能為漢字或數(shù)字開(kāi)頭▓注釋符%后面的文字不執(zhí)行▓程序的每一行的執(zhí)行相當(dāng)于在命令行執(zhí)行▓一行可以寫(xiě)多條語(yǔ)句,以‘,’或‘;’隔開(kāi);一行寫(xiě)不下時(shí),以‘…’續(xù)行▓對(duì)于命令文件形式,建議在程序段開(kāi)始用

clear,closeall等命令清除以前的變量▓對(duì)于函數(shù)文件形式,程序中的所有變量均為局部變量。2.1M文件二、函數(shù)

函數(shù)是用用來(lái)定義子程序的。主程序?qū)嶋H上也是一個(gè)函數(shù)(由MATLAB調(diào)用)。1、函數(shù)頭的形式:

function函數(shù)名()(無(wú)變量傳遞)function函數(shù)名(var1,var2,…)(無(wú)返回值)function[y1,y2,…]=函數(shù)名(var1,var2,…)2.1M文件2、函數(shù)的位置▓函數(shù)可以是一個(gè)單獨(dú)的文件(文件名和函數(shù)名應(yīng)相同)▓函數(shù)也可以放在主程序的后面。

2.1M文件3、舉例根據(jù)t,f1,f2生成雙音頻的函數(shù)functionfy=mydtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t);該函數(shù)可以是單獨(dú)文件或在主程序后面。例如:mydt1.m2.1M文件%程序mydt1.m產(chǎn)生一個(gè)雙音頻clc;clearall;fs=8000;t=(0:1/fs:0.2);y=dtones(t,697,1209);%鍵1對(duì)應(yīng)的兩個(gè)頻率plot(t,y);wavplay(y,fs);%函數(shù)functionfy=dtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t);2.1M文件%程序文件mydt1.m產(chǎn)生一個(gè)雙音頻clc;clear;closeall;fs=8000;t=(0:1/fs:0.2);y=dtones(t,697,1209);plot(t,y);wavplay(y,fs);%函數(shù)文件dtones.mfunctionfy=dtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t);2.1M文件4、全局變量:如果在主程序和函數(shù)中使用同一變量,應(yīng)定義全局變量。globalval1val2…%程序文件mydt2.m產(chǎn)生一個(gè)雙音頻clc;clear;closeall;globaltfsfs=8000;t=(0:1/fs:0.2);y=dtones1(697,1209);plot(t,y);%函數(shù)文件dtones1.mfunctionfy=dtones1(f1,f2)globaltfsfy=sin(2*pi*f1*t)+sin(2*pi*f2*t);wavplay(fy,fs);%程序文件名為mean.mfunctiony=mean(x)%mean求平均值%對(duì)于向量,返回向量x中各元素的平均值%對(duì)于矩陣,返回包含各列元素平均值的行向量[m,n]=size(x);ifm==1m=n;end;y=sum(x)/m;>>helpmeanmean求平均值對(duì)于向量,返回向量x中各元素的平均值對(duì)于矩陣,返回包含各列元素平均值的行向量

例:編寫(xiě)函數(shù)文件求半徑為r的圓的面積和周長(zhǎng)。函數(shù)文件如下:function[s,p]=fcircle(r)%CIRCLEcalculate%r圓半徑%s圓面積%p圓周長(zhǎng)s=pi*r*r;p=2*pi*r;函數(shù)調(diào)用的一般格式是:

[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)

要注意的是,函數(shù)調(diào)用時(shí)各實(shí)參出現(xiàn)的順序、個(gè)數(shù),應(yīng)與函數(shù)定義時(shí)形參的順序、個(gè)數(shù)一致,否則會(huì)出錯(cuò)。函數(shù)調(diào)用時(shí),先將實(shí)參傳遞給相應(yīng)的形參,從而實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。例:函數(shù)文件examp.m:functionfout=charray(a,b,c)ifnargin==1fout=a;elseifnargin==2fout=a+b;elseifnargin==3fout=(a*b*c)/2;end

命令文件mydemo.m:x=[1:3];y=[1;2;3];examp(x)examp(x,y')examp(x,y,3)2.2輸入輸出語(yǔ)句(人機(jī)交互)1、屏幕輸入格式:x=input(‘提示符’)----等待輸入數(shù)據(jù)

x=input(‘提示符’,‘s’)----等待輸入字符串

xm=input('What''syourname?','s');

2.2輸入輸出語(yǔ)句(人機(jī)交互)2、菜單命令格式:x=menu(‘標(biāo)題’,‘菜單項(xiàng)1’,菜單項(xiàng)2’,…)返回菜單序號(hào)。例如:x=menu(‘Title’,’Plus’,’Minus’)2.2輸入輸出語(yǔ)句(人機(jī)交互)3、暫停格式:pause------等待敲擊鍵盤(pán)

pause(n)-----等待n秒4、交出鍵盤(pán)格式:keyboad---程序執(zhí)行到該命令時(shí)暫停,在屏幕上顯示K,這時(shí)用戶(hù)可輸入命令,查看中間結(jié)果,輸入return命令,則程序繼續(xù)執(zhí)行2.2輸入輸出語(yǔ)句(人機(jī)交互)5、中止執(zhí)行6、顯示格式:display(x)-----在命令行顯示x的內(nèi)容格式:^C---強(qiáng)行停止程序的執(zhí)行,回到命令行2.2輸入輸出語(yǔ)句(人機(jī)交互)7、打印格式:print---------打印當(dāng)前繪圖print-dbitmap文件名

---------將繪圖轉(zhuǎn)為圖象文件

-djpeg

例:輸入x,y的值,并將它們的值互換后輸出。程序如下:

x=input('Inputxplease.');y=input('Inputyplease.');z=x;x=y;y=z;disp(x);disp(y);例:求一元二次方程ax2+bx+c=0的根。程序如下:a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);例:分別建立命令文件和函數(shù)文件,將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫度c。程序1:首先建立命令文件并以文件名f2c.m存盤(pán)。clear;%清除工作空間中的變量f=input('InputFahrenheittemperature:');c=5*(f-32)/9然后在MATLAB的命令窗口中輸入f2c,將會(huì)執(zhí)行該命令文件,執(zhí)行情況為:InputFahrenheittemperature:73c=22.7778程序2:首先建立函數(shù)文件f2c.m。functionc=f2c(f)c=5*(f-32)/9然后在MATLAB的命令窗口調(diào)用該函數(shù)文件。clear;y=input('InputFahrenheittemperature:');x=f2c(y)輸出情況為:InputFahrenheittemperature:70c=21.1111x=21.11112.3程序控制語(yǔ)句任何計(jì)算機(jī)語(yǔ)言都有三種基本結(jié)構(gòu),即:?順序結(jié)構(gòu):無(wú)控制語(yǔ)句?分支結(jié)構(gòu):if,switch?循環(huán)結(jié)構(gòu):for,while2.3程序控制語(yǔ)句1、順序結(jié)構(gòu):無(wú)控制語(yǔ)句

按照順序從頭至尾地執(zhí)行程序中的各條語(yǔ)句。順序結(jié)構(gòu)一般不包含其他任何子語(yǔ)句或控制語(yǔ)句。例如:n=0:100;x=sin(2*pi*0.01*n);plot(x);holdonstem(x,’r’);grid2.3程序控制語(yǔ)句?分支結(jié)構(gòu):if,switchif和switch語(yǔ)句用于根據(jù)條件選擇執(zhí)行相應(yīng)的語(yǔ)句。1、if語(yǔ)句(適合分支少)if語(yǔ)句根據(jù)邏輯表達(dá)式的值來(lái)確定是否執(zhí)行緊接的語(yǔ)句體。常見(jiàn)的調(diào)用格式有:2.3程序控制語(yǔ)句格式1:if表達(dá)式語(yǔ)句

end格式2:if表達(dá)式語(yǔ)句1else

語(yǔ)句2end2.3程序控制語(yǔ)句格式3:

if表達(dá)式1

語(yǔ)句1elseif表達(dá)式2

語(yǔ)句2else

語(yǔ)句3end例如:判斷輸入數(shù)的奇偶性n=input(‘n=’);ifrem(n,2)==0display(‘n是偶數(shù)’)elsedisplay(‘n是奇數(shù)’)end2.3程序控制語(yǔ)句2、switch語(yǔ)句(適合分支多)格式:

switch表達(dá)式(標(biāo)量或表達(dá)式)

case值1

語(yǔ)句1case值2

語(yǔ)句2…otherwise

語(yǔ)句nend2.3程序控制語(yǔ)句switch語(yǔ)句和if語(yǔ)句類(lèi)似。Switch語(yǔ)句根據(jù)變量或表達(dá)式的取值不同分別執(zhí)行不同的命令。2.3程序控制語(yǔ)句例如:根據(jù)菜單選擇顯示不同的函數(shù)x=menu('波形','正弦','余弦','正切','余切');switchxcase1ezplot('sin')case2ezplot('cos')case3ezplot('tan')case4ezplot('cot')end2.3程序控制語(yǔ)句3、for語(yǔ)句格式:for變量=初值:增量:終值語(yǔ)句

end

例如:求100!

x=1;fork=1:1:100x=x*k;endx例:已知,當(dāng)n=100時(shí),求y的值。程序如下:

y=0;n=100;fori=1:ny=y+1/(2*i-1);endy

在實(shí)際MATLAB編程中,采用循環(huán)語(yǔ)句會(huì)降低其執(zhí)行速度,所以前面的程序通常由下面的程序來(lái)代替:

n=100;i=1:2:2*n-1;y=sum(1./i);yfor語(yǔ)句更一般的格式為:

for循環(huán)變量=矩陣表達(dá)式循環(huán)體語(yǔ)句

end執(zhí)行過(guò)程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語(yǔ)句,直至各列元素處理完畢。

例:寫(xiě)出下列程序的執(zhí)行結(jié)果。

s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];

fork=as=s+k;enddisp(s');2.3程序控制語(yǔ)句4、while語(yǔ)句格式:while表達(dá)式語(yǔ)句

end例如:計(jì)算1,…,1000的和x=1;whilex<=1000x=x+1;end表達(dá)式成立(為真)時(shí),一直執(zhí)行語(yǔ)句,否則跳出循環(huán).例如:求Matlab中的最大實(shí)數(shù)。

例:從鍵盤(pán)輸入若干個(gè)數(shù),當(dāng)輸入0時(shí)結(jié)束輸入,求這些數(shù)的平均值和它們之和。程序如下:sum=0;cnt=0;val=input('Enteranumber(endin0):');while(val~=0)sum=sum+val;cnt=cnt+1;val=input('Enteranumber(endin0):');endif(cnt>0)summean=sum/cntend2.3程序控制語(yǔ)句5、break和continue語(yǔ)句用于循環(huán)語(yǔ)句(for,while):break:用于跳出循環(huán)continue:跳過(guò)后面的語(yǔ)句繼續(xù)循環(huán)2.3程序控制語(yǔ)句例:輸出100到200之間第一個(gè)能被7整除的數(shù)fori=100:200ifrem(i,7)~=0continueendbreakendi循環(huán)的嵌套如果一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個(gè)循環(huán)結(jié)構(gòu),就稱(chēng)為循環(huán)的嵌套,或稱(chēng)為多重循環(huán)結(jié)構(gòu)。

例:若一個(gè)數(shù)等于它的各個(gè)真因子之和,則稱(chēng)該數(shù)為完數(shù),如6=1+2+3,所以6是完數(shù)。求[1,500]之間的全部完數(shù)。

form=1:500s=0;fork=1:m/2ifrem(m,k)==0s=s+k;endendifm==sdisp(m);endend

一般來(lái)說(shuō),應(yīng)用程序的錯(cuò)誤有兩類(lèi),一類(lèi)是語(yǔ)法錯(cuò)誤,另一類(lèi)是運(yùn)行時(shí)的錯(cuò)誤。語(yǔ)法錯(cuò)誤包括詞法或文法的錯(cuò)誤,例如函數(shù)名的拼寫(xiě)錯(cuò)、表達(dá)式書(shū)寫(xiě)錯(cuò)等。程序運(yùn)行時(shí)的錯(cuò)誤是指程序的運(yùn)行結(jié)果有錯(cuò)誤,這類(lèi)錯(cuò)誤也稱(chēng)為程序邏輯錯(cuò)誤。2.4程序的調(diào)試一、調(diào)試注意事項(xiàng)■MATLAB的查錯(cuò)能力較強(qiáng),一般語(yǔ)法錯(cuò)誤,會(huì)直接報(bào)告。■如果語(yǔ)法沒(méi)有出錯(cuò),而得不到正確結(jié)果時(shí),一般需要調(diào)試?!鰧?duì)于較小的程序只要仔細(xì)檢查程序即可■對(duì)于比較大的程序,建議編寫(xiě)一部分,檢查一部分?!鍪褂谜{(diào)試命令2.4程序的調(diào)試二、程序的調(diào)試

1、利用調(diào)試命令例如:設(shè)置斷點(diǎn)(dbstop)單步執(zhí)行(dbstep)。調(diào)試命令放在通用命令庫(kù)中。使用不方便。2.4程序的調(diào)試二、程序的調(diào)試2、利用m文件編輯的調(diào)試菜單

Debug:Breakpoint:例如:調(diào)試mydt.m

實(shí)驗(yàn)三內(nèi)容回顧MATLAB基本程序設(shè)計(jì):1M文件2輸入輸出語(yǔ)句3程序控制語(yǔ)句4程序的調(diào)試第2章第三講MATLAB圖形用戶(hù)界面設(shè)計(jì)

圖形用戶(hù)界面(GUI,GraphicUserInterface)是指包含圖形對(duì)象的用戶(hù)界面.

圖形用戶(hù)界面是現(xiàn)代程序設(shè)計(jì)的基本要求。與圖形用戶(hù)界面有關(guān)的函數(shù)庫(kù):GUI工具庫(kù)(GUITOOLS)

■句柄圖形■圖形用戶(hù)界面設(shè)計(jì)方法■圖形界面對(duì)話框設(shè)計(jì)■生成獨(dú)立的EXE文件主要內(nèi)容6.1句柄圖形一、句柄圖形的概念句柄圖形(HandleGraphics):一個(gè)圖形界面由若干個(gè)對(duì)象(object)組成,每一個(gè)對(duì)象都有一個(gè)唯一的標(biāo)識(shí),這個(gè)標(biāo)識(shí)稱(chēng)為對(duì)象的句柄(Handle)。

每一個(gè)對(duì)象,又可以包含若干個(gè)子對(duì)象,子對(duì)象的上一級(jí)稱(chēng)為父對(duì)象。二、句柄圖形的層次結(jié)構(gòu)6.1句柄圖形

利用對(duì)象的句柄和層次關(guān)系可以修改對(duì)象的屬性

(如:線的顏色等)。

獲取圖形句柄的函數(shù)有:

■gcf:獲取當(dāng)前圖形窗口的句柄

■gca:獲取當(dāng)前坐標(biāo)軸的句柄

■gco:獲取當(dāng)前圖形對(duì)象(被鼠標(biāo)最近點(diǎn)擊)的句柄

三、利用句柄獲取和設(shè)置對(duì)象的屬性6.1句柄圖形三、利用句柄獲取和設(shè)置對(duì)象的屬性1、對(duì)象的屬性(Property)

任何圖形對(duì)象都有很多屬性,例如:對(duì)于線對(duì)象,有顏色、線形等屬性。6.1句柄圖形

2、獲取對(duì)象的屬性----get格式:

p=get(h)-----返回對(duì)象h的所有屬性值

p=get(h,’屬性名’)-----返回對(duì)象h的某個(gè)屬性值

例如:h=plot([121])(返回線的句柄)p=get(h);p=get(h,’color’)6.1句柄圖形3、設(shè)置對(duì)象的屬性----set格式:set(h,’屬性名1’,’屬性名值1’,

’屬性名2’,’屬性名值2’,…)例如:set(h,’color’,[1,0,0],’linewidth’,10)set(gca,’color’,[0,1,0]);

set(gcf,’color’,[0,0,0])6.2圖形用戶(hù)界面設(shè)計(jì)方法一、設(shè)計(jì)入門(mén)1、圖形用戶(hù)界面設(shè)計(jì)有兩種方式:

■一是基于函數(shù)的編程方式(如:利用uimenu()函數(shù)創(chuàng)建一個(gè)菜單利用uicontrol()函數(shù)創(chuàng)建一個(gè)控件)

■二是基于GUI方式(推薦的方式)6.2圖形用戶(hù)界面設(shè)計(jì)方法一、設(shè)計(jì)入門(mén)2、GUI方式的進(jìn)入(1)進(jìn)入GUI的命令是:guide6.2圖形用戶(hù)界面設(shè)計(jì)方法(2)設(shè)置應(yīng)用選項(xiàng)(Applicationoptions)(右鍵屬性)6.2圖形用戶(hù)界面設(shè)計(jì)方法

3、一個(gè)例子:

設(shè)計(jì)一個(gè)圖形界面包含4個(gè)函數(shù)按鍵和一個(gè)坐標(biāo)軸(Axes),按一個(gè)鍵則顯示該函數(shù)的波形。

步驟如下:(1)進(jìn)入guide,放置坐標(biāo)軸和按鈕,并修改按鈕的屬性(名稱(chēng)string,字體font)。6.2圖形用戶(hù)界面設(shè)計(jì)方法

3、一個(gè)例子:

(2)保存(myfun),圖形界面信息保存在以.fig結(jié)尾的文件中(myfun.fig);同時(shí)生成一個(gè)同名的m文件(myfun.m).(3)編寫(xiě)回調(diào)函數(shù)(事件)(4)運(yùn)行6.2圖形用戶(hù)界面設(shè)計(jì)方法二、菜單和控件

MATLAB圖形界面包含兩類(lèi)主要對(duì)象:菜單和控件(按鈕等)

1、菜單創(chuàng)建菜單6.2圖形用戶(hù)界面設(shè)計(jì)方法

2、控件

所有控件都有自己的屬性和回調(diào)函數(shù),可根據(jù)需要修改。

開(kāi)關(guān)控件復(fù)選框控件文本顯示控件圖文框控件下拉列表框控件按鈕控件單選按鈕控件文本編輯控件滾動(dòng)條控件列表框控件坐標(biāo)軸控件6.2圖形用戶(hù)界面設(shè)計(jì)方法三、回調(diào)函數(shù)

在圖形界面保存時(shí),自動(dòng)生成一個(gè)m文件,所有對(duì)象的回調(diào)函數(shù)頭都放在m文件的后邊。只需添入代碼即可。

6.2圖形用戶(hù)界面設(shè)計(jì)方法

編寫(xiě)回調(diào)函數(shù)需要注意:1、對(duì)象的句柄:回調(diào)函數(shù)的自變量中已有一個(gè)handles(所有對(duì)象的handle),具體到某個(gè)對(duì)象的handle可使用:handles.tag

(tag是對(duì)象的一個(gè)屬性,表示對(duì)象標(biāo)識(shí))例如:標(biāo)識(shí)(tag)為axes1的坐標(biāo)軸的句柄為:handles.axes16.2圖形用戶(hù)界面設(shè)計(jì)方法2、屬性的獲取和設(shè)置

利用get和set例如:添加一個(gè)Edit控件和一個(gè)按鈕,每按一次按鈕,Edit的數(shù)加1。按鈕的回調(diào)函數(shù)為:

a=get(handles.edit1,'string');b=str2num(a);b=b+1;c=num2str(b);set(handles.edit1,'string',c);6.2圖形用戶(hù)界面設(shè)計(jì)方法3、坐標(biāo)軸的指定

axes(h)(h為坐標(biāo)軸的句柄)4、使用其它回調(diào)函數(shù)的變量必須定義為全局變量6.2圖形用戶(hù)界面設(shè)計(jì)方法四、圖形界面設(shè)計(jì)原則1、簡(jiǎn)單性(Simplicity):力求簡(jiǎn)潔大方2、一致性(Consistency):界面風(fēng)格要一致3、習(xí)常性(Familiarity):符合習(xí)慣6.2圖形用戶(hù)界面設(shè)計(jì)方法五、圖形界面設(shè)計(jì)的一般步驟

1、分析要求,明確設(shè)計(jì)任務(wù)2、在草稿紙上給出界面草圖,反復(fù)審查3、按構(gòu)思的草圖,設(shè)計(jì)界面4、編寫(xiě)回調(diào)程序,逐項(xiàng)調(diào)試6.3圖形界面對(duì)話框設(shè)計(jì)一、專(zhuān)用對(duì)話框1、信息提示格式:msgbox(‘顯示內(nèi)容’,‘標(biāo)題’)

對(duì)話框只有一個(gè)ok按鈕例如:msgbox(‘保存完畢’,‘提示’)6.3圖形界面對(duì)話框設(shè)計(jì)2、問(wèn)題對(duì)話框格式:q=questdlg(‘顯示內(nèi)容’,‘標(biāo)題’)

對(duì)話框有Yes/No/Cancel按鈕,

返回點(diǎn)擊的按鈕(Yes/No/Cancel)例如:q=questdlg(‘是否保存?’,‘提示’)(q=‘Yes’)其它的對(duì)話框還有:幫助提示helpdlg等。6.3圖形界面對(duì)話框設(shè)計(jì)二、標(biāo)準(zhǔn)對(duì)話框1、打開(kāi)文件對(duì)話框格式:fn=uigetfile(‘通配符’,‘標(biāo)題’)fn為返回的文件名例如:fn=uigetfile('*.wav','OpenFile');6.3圖形界面對(duì)話框設(shè)計(jì)2、保存文件對(duì)話框格式:fn=uiputfile(‘初始文件名’,‘標(biāo)題’)fn為返回的文件名

fn=uiputfile(‘test.wav',‘SaveFile');6.3圖形界面對(duì)話框設(shè)計(jì)3、設(shè)置顏色對(duì)話框(uisetcolor)4、設(shè)置字體對(duì)話框(uisetfont)三、對(duì)話框例子打開(kāi)一個(gè)wav文件,顯示其波形(mysound.m))6.4生成獨(dú)立的EXE文件步驟:1、安裝C或C++編譯器如:VC++,C++Builder2、使用mbuild–setup建立環(huán)境3、使用mcc–BsqlcppFilename

創(chuàng)建獨(dú)立的應(yīng)用程序4、在沒(méi)有安裝MATLAB的計(jì)算機(jī)上運(yùn)行應(yīng)用程序,還需要攜帶一些庫(kù)文件(放在matlab安裝目錄的extern\lib\win32中mglinstaller.exe)

實(shí)驗(yàn)四內(nèi)容回顧1、句柄圖形2、圖形用戶(hù)界面設(shè)計(jì)方法3、圖形界面對(duì)話框設(shè)計(jì)4、生成獨(dú)立的EXE文件第7章MATLAB符號(hào)數(shù)學(xué)工具箱MATLAB工具箱主要有2類(lèi):■通用工具箱:(可用于各個(gè)領(lǐng)域)

◆符號(hào)數(shù)學(xué)工具箱(Symbolic)與加拿大Maple公司合作,內(nèi)核使用Maple的符號(hào)計(jì)算引擎。

◆系統(tǒng)仿真工具箱(Simulink)■專(zhuān)用工具箱:(只用于相關(guān)領(lǐng)域)(已有30多個(gè)工具箱)主要內(nèi)容■符號(hào)的創(chuàng)建■符號(hào)的基本運(yùn)算■符號(hào)的簡(jiǎn)化和替換■符號(hào)的微積分■符號(hào)方程的求解■符號(hào)積分變換7.1符號(hào)的創(chuàng)建一、符號(hào)變量的概念MATLAB中的變量有兩類(lèi)::

■數(shù)值變量:參與運(yùn)算和運(yùn)算結(jié)果均為數(shù)值例如:a=1,a+a=2■符號(hào)變量:參與運(yùn)算和運(yùn)算結(jié)果均為符號(hào)例如:a=sym(‘b’),a+a=2*b7.1符號(hào)的創(chuàng)建二、符號(hào)變量的創(chuàng)建

1、格式1:s=sym(‘符號(hào)表達(dá)式’)

符號(hào)變量s的值為‘符號(hào)表達(dá)式’例如:s=sym(‘sin(x)+x’)7.1符號(hào)的創(chuàng)建

2、格式2:symss1s2…

定義多個(gè)符號(hào)變量。相當(dāng)于:s1=sym(‘s1’);s2=sym(‘s2’)…

例如:7.1符號(hào)的創(chuàng)建注意:■符號(hào)表達(dá)式對(duì)空格敏感,不要在符號(hào)間加空格■含有符號(hào)變量的表達(dá)式一定是一個(gè)符號(hào)表達(dá)式■注意引號(hào)的使用7.1符號(hào)的創(chuàng)建

三、符號(hào)表達(dá)式的種類(lèi)1、符號(hào)函數(shù)可以是任意函數(shù)或多項(xiàng)式例如:7.1符號(hào)的創(chuàng)建例如:◆代數(shù)方程:eq=sym(‘a(chǎn)*x^2+b*x+c=0’)◆一階微分方程:eq=sym(‘Dy-y=x’)(Dy=dy/dt或dy/dx)◆二階微分方程:eq=sym(‘D2y-y=x’)(D2y=d2y/dt2或d2y/dx2)2、符號(hào)方程

可以是線性方程、非線性方程、代數(shù)方程和常微分方程等。7.1符號(hào)的創(chuàng)建3、符號(hào)矩陣

單一符號(hào)表達(dá)式相當(dāng)于1*1矩陣。符號(hào)變量可以是一個(gè)符號(hào)矩陣。例如:a=sym(‘[x+1,y+2;sin(x),cos(y)]’)生成一個(gè)2*2的符號(hào)矩陣,a(1,2)=’y+2’7.2符號(hào)的基本運(yùn)算一、符號(hào)矩陣四則運(yùn)算同矩陣的四則運(yùn)算基本相同,參與運(yùn)算的是符號(hào)。1、加減法:對(duì)應(yīng)行列相加減例如:a=sym(‘[xy;xy]’);b=sym(‘[x^2y^2;x^2y^2]’)a+b=[x+x^2;y+y^2;x+x^2;y+y^2]7.2符號(hào)的基本運(yùn)算2、乘法:元素相乘(.*)和矩陣相乘(*)例如:a.*b=[x^3y^3;x^3y^3]a*b=[x^3+y*x^2x*y^2+y^3;x^3+y*x^2x*y^2+y^3]7.2符號(hào)的基本運(yùn)算3、除法:元素相除(.\./)和矩陣相除(/)例如:7.2符號(hào)的基本運(yùn)算符號(hào)的運(yùn)算也可使用以下函數(shù):

symadd(s1,s2)symsub(s1,s2)symmul(s1,s2)symdiv(s1,s2)sympow(s,p)7.2符號(hào)的基本運(yùn)算二、符號(hào)矩陣代數(shù)運(yùn)算包括行列式、矩陣的逆、冪運(yùn)算等同數(shù)值矩陣。三、符號(hào)運(yùn)算的準(zhǔn)確解例如:在數(shù)值運(yùn)算中:1/2+1/3=0.83333333

在符號(hào)運(yùn)算中:Sym(‘1/2’)+sym(‘1/3’)=5/6

也可使用強(qiáng)制求解函數(shù):vpa(s)例如:vpa(‘5/6’)=0.833333337.2符號(hào)的基本運(yùn)算四、符號(hào)函數(shù)計(jì)算器

函數(shù)計(jì)算器:funtool7.3符號(hào)的簡(jiǎn)化和替換一、因式分解格式:factor(s)---對(duì)符號(hào)表達(dá)式s進(jìn)行因式分解例如:factor(sym(‘x^3+1’))=(x+1)*(x^2-x+1)factor(sym(‘a(chǎn)^2-b^2’))=(a-b)*(a+b)7.3符號(hào)的簡(jiǎn)化和替換二、表達(dá)式的展開(kāi)格式:expand(s)---對(duì)符號(hào)表達(dá)式s進(jìn)行展開(kāi)例如:symsx;expand((x+1)^3)=x^3+3*x^2+3*x+1expand(sym(‘sin(x+y)’))=sin(x)*cos(y)+cos(x)*sin(y)7.3符號(hào)的簡(jiǎn)化和替換三、同類(lèi)項(xiàng)合并格式:collect(S)---對(duì)缺省變量進(jìn)行同類(lèi)項(xiàng)合并

collect(S,v)---對(duì)變量v進(jìn)行同類(lèi)項(xiàng)合并例如:7.3符號(hào)的簡(jiǎn)化和替換四、表達(dá)式的化簡(jiǎn)格式:simplify(S)------對(duì)符號(hào)表達(dá)式進(jìn)行化減例如:7.3符號(hào)的簡(jiǎn)化和替換五、分式通分格式:[N,D]=numden(S)----對(duì)S進(jìn)行通分,

N為分子,D為分母例如:7.3符號(hào)的簡(jiǎn)化和替換六、符號(hào)表達(dá)式的替換

r=subs(s,old,new)

用new代替符號(hào)表達(dá)式s中的old。例如1:symsxs=(x+1)r=subs(s,x,x^2)(r=x^2+1)7.3符號(hào)的簡(jiǎn)化和替換例如2:symsxs=(x+1)^2+1/(x+1)+1

r=subs(s,x+1,x)(r=1/x+x^2+1)7.3符號(hào)的簡(jiǎn)化和替換七、符號(hào)表達(dá)式的求值

1、求準(zhǔn)確值用數(shù)值符號(hào)替換表達(dá)式中的變量;例如:symsxs=1/(x+1)sv=subs(s,x,‘2’)

(1/3)7.3符號(hào)的簡(jiǎn)化和替換七、符號(hào)表達(dá)式的求值

2、求值用數(shù)值替換表達(dá)式中的變量;

sv=subs(s,x,2)

(0.33333333)7.4符號(hào)的微積分一、符號(hào)極限格式:limit(s,a)計(jì)算符號(hào)s趨近a的極限。

limit(s,x,a)計(jì)算符號(hào)s中x趨近a的極限。

例如:symsxlimit(sin(x)/x,0)

(1)7.4符號(hào)的微積分二、符號(hào)微分1、格式1:diff(s)

對(duì)符號(hào)表達(dá)式s求缺省變量的微分例如:diff(‘x^2’)=2*x;diff(‘sin(x^2)’)=2*cos(x^2)*x2、格式2:diff(s,v)

對(duì)符號(hào)表達(dá)式的變量v求微分例如:diff(‘x^2+y^3’,’y’)=3*y^27.4符號(hào)的微積分二、符號(hào)微分3、格式3:diff(s,v,n)

對(duì)符號(hào)表達(dá)式的變量v求n階微分例如:diff(‘x^2+y^3’,’y’,2)=6*y7.4符號(hào)的微積分

三、符號(hào)積分1、格式1:int(s)

對(duì)符號(hào)表達(dá)式的缺省變量求積分

例如:int(‘x+1’)=1/2*x^2+xint(‘cos(x)+a^x’)=sin(x)+1/log(a)*a^x2、格式2:int(s,v)

對(duì)符號(hào)表達(dá)式的變量v求積分例如:int(‘x+y’,’y’)=x*y+1/2*y^27.4符號(hào)的微積分3、格式3:int(s,v,a,b)

對(duì)符號(hào)表達(dá)式的變量v在(a,b)區(qū)間求定積分例如:int(‘x+y’,’y’,0,1)=x+1/2int(‘x+1’,0,1)=3/2計(jì)算二重不定積分:int(int('x*exp(-x*y)','x'),'y')=1/y*exp(-x*y)7.5符號(hào)方程的求解一、代數(shù)方程的求解1、格式1:solve(f)----求單個(gè)方程的解例如:symsxsolve(‘a(chǎn)*x^2+b*x+c=0’)

ans=[1/2/a*(-b+(b^2-4*a*c)^(1/2))][1/2/a*(-b-(b^2-4*a*c)^(1/2))]例如:symsx;solve(‘sin(x)=cos(x)’)

(1/4*pi)7.5符號(hào)方程的求解2、格式2:solve(f1,f2,...,fn)

------對(duì)缺省變量解方程組例如:symsxyz;[x,y,z]=solve(‘x+y+z=1’,’x+2*y-z=3’,’x-y-z=6’)

(x=7/2y=-1z=-3/2)3、格式3:solve(f1,f2,...,fn,’v’)

-----對(duì)變量v解方程(組)例如:symsxyz;[x,y]=solve(‘x+y+z=1’,’x+2*y-z=3’,’x,y’)

(x=-3*z-1y=2*z+2)

7.5符號(hào)方程的求解二、常微分方程的求解格式:dsolve(f1,f2,...,fn,’C’,’V’,)

對(duì)微分方程f1,…,fn(組)的變量V求解,

C為初始條件,V為中間變量(缺省為t),

V和C可以缺省。7.5符號(hào)方程的求解例如1:dsolve(‘Dx=-a*x’)

(x=C1*exp(-a*t))(一階微分方程)例如2:dsolve('Dx=-a*x','x(0)=1','s')x=exp(-a*s)7.5符號(hào)方程的求解例如3:(二階微分方程)dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0')

(y=cos(a*t))例如4:y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0',’x’)

(y=exp(-x)*cos(x)+exp(-x)*sin(x))7.6符號(hào)積分變換一、Fourier變換1、Fourier變換格式:fourier(S)

對(duì)符號(hào)表達(dá)式(函數(shù))進(jìn)行傅立葉變換例如:fourier(sym(‘1’))=2*pi*Dirac(w)7.6符號(hào)積分變換一、Fourier變換2、Fourier反變換格式:ifourier(S)

對(duì)符號(hào)表達(dá)式(函數(shù))進(jìn)行傅立反變換例如:ifourier(sym(‘1/(1+j*w)’),’t’)=exp(-t)*Heaviside(t)(即u(t))7.6符號(hào)積分變換二、Laplace變換1、Laplace變換(雙邊)

格式:laplace(S)

對(duì)符號(hào)表達(dá)式(函數(shù))進(jìn)行Laplace變換例如:laplace(sym(‘1’))=1/s7.6符號(hào)積分變換二、Laplace變換2、Laplace反變換格式:ilaplace(S)對(duì)符號(hào)表達(dá)式(函數(shù))進(jìn)行Laplace反變換

例如:ilaplace(sym(‘1/(s+1)’))=exp(-t)7.6符號(hào)積分變換三、Z變換1、Z變換

格式:ztrans(S)

對(duì)符號(hào)表達(dá)式(函數(shù))進(jìn)行Z變換

例如:ztrans(sym(‘1’))=z/(z-1)7.6符號(hào)積分變換三、Z變換2、Z反變換

格式:iztrans(S)

對(duì)符號(hào)表達(dá)式(函數(shù))進(jìn)行Z反變換

例如:iztrans(sym(‘z/(z-2)’)=2^n

實(shí)驗(yàn)五內(nèi)容回顧1、符號(hào)的創(chuàng)建2、符號(hào)的基本運(yùn)算3、符號(hào)的簡(jiǎn)化和替換4、符號(hào)的微積分5、符號(hào)方程的求解6、符號(hào)積分變換第8章Simulink仿真

本章要點(diǎn)

Simulink系統(tǒng)的基本模塊仿真模型的編輯仿真參數(shù)的設(shè)置Simulink是MATLAB環(huán)境下對(duì)動(dòng)態(tài)系統(tǒng)進(jìn)行建模、仿真和分析的一個(gè)軟件包。該系統(tǒng)的兩個(gè)主要功能就是Simu(仿真)和Link(連接)。一、Simulink的啟動(dòng)和退出1.Simulink的啟動(dòng)在MATLAB操作桌面下,單擊工具欄中的圖標(biāo)或在命令窗口鍵入命令Simulink,就會(huì)彈出一個(gè)名為“SimulinkLibraryBrowser”的瀏覽器窗口。8.1Simulink系統(tǒng)的基本模塊2.模型的創(chuàng)建

在創(chuàng)建新模型時(shí),單擊SimulinkLibraryBrowser瀏覽器上方工具欄內(nèi)的“建立新模型”圖標(biāo)、或者單擊MATLAB命令窗口File→New→Model選項(xiàng),會(huì)彈出一個(gè)名為Untitled(無(wú)標(biāo)題)的空白窗口,所有控制模塊都創(chuàng)建在這個(gè)窗口中。

二、Simulink基本模塊

在Simulink的模塊庫(kù)瀏覽器窗口左側(cè)的Simulink選項(xiàng)上單擊鼠標(biāo)右鍵,單擊彈出菜單的Openthe‘Simulink’Labray選項(xiàng),可以打開(kāi)Simulink模塊庫(kù)窗口。

1.信號(hào)源模塊(Sources)

雙擊Simulink模塊庫(kù)窗口中的Sources模塊,即可打開(kāi)信號(hào)源模塊。

信號(hào)源模塊

模塊功能模塊功能In1創(chuàng)建輸入端Ground接地Constant常數(shù)Clock當(dāng)時(shí)時(shí)間SignalGenerator信號(hào)發(fā)生器DigitalClock數(shù)字時(shí)鐘Ramp斜波FromFile從文件讀數(shù)據(jù)SineWave正弦波FromWorkspace從工作空間讀數(shù)據(jù)Step階躍信號(hào)RandomNumber隨機(jī)信號(hào)RepeatingSequence重復(fù)序列UniformRandomNumber均勻隨機(jī)信號(hào)PulseGenerator脈沖發(fā)生器Band-LimitedWhiteNoise帶限白噪聲ChirpSignal快速正弦掃描2.輸出模塊(Sinks)模塊功能模塊功能Scope示波器ToFile輸出到文件FloatingScope可選示波器ToWorkspace輸出到工作空間XYGraphXY關(guān)系圖Terminator通用終端Outl創(chuàng)建輸出端StopSimulation輸出不為0時(shí)停止仿真Display實(shí)時(shí)數(shù)值顯示3.連續(xù)系統(tǒng)模塊(Continuous)連續(xù)系統(tǒng)模塊提供積分、微分等連續(xù)系統(tǒng)仿真的常用原件。

連續(xù)系統(tǒng)模塊的功能

模塊功能模塊功能Integrator積分Zero-Pole零極點(diǎn)Derivative微分Memory延時(shí)輸出State-Space狀態(tài)方程TransportDelay傳輸延時(shí)TransferFcn傳遞函數(shù)VariableTransportDelay可變傳輸延時(shí)4.離散系統(tǒng)模塊(Discrete)

離散系統(tǒng)模塊提供了濾波器、傳遞函數(shù)等離散系統(tǒng)仿真模塊。

離散系統(tǒng)模塊的功能模塊功能模塊功能Zero-OrderHold零階保持器DiscreteFilter離散濾波器UnitDelay單位延時(shí)采樣保持DiscreteTransferFcn離散傳遞函數(shù)Discrete-TimeIntegrator離散時(shí)間積分DiscreteZero-Pole離散零極點(diǎn)DiscreteState-Space離散狀態(tài)方程First-OrderHold一階保持器8.?dāng)?shù)學(xué)運(yùn)算模塊(MathOperations)

數(shù)學(xué)運(yùn)算模塊提供了基本數(shù)學(xué)運(yùn)算函數(shù)、三角函數(shù)、復(fù)數(shù)運(yùn)算函數(shù)以及矩陣運(yùn)算函數(shù)。數(shù)學(xué)運(yùn)算模塊的功能模塊功能模塊功能Sum求和RoundingFunction取整函數(shù)Product積或商CombinatorialLogic邏輯真值表DotProduct點(diǎn)積LogicOperator邏輯算子Gain常數(shù)增益BitwiseLogicalOperator位邏輯算子SliderGain可變?cè)鲆鍾elationalOperator關(guān)系算子MatrixGain矩陣增益ComplextoMagnitude-Angle復(fù)數(shù)的模和輻角MathFunction數(shù)學(xué)運(yùn)算函數(shù)Magnitude-AngletoComplex模和輻角合成函數(shù)Trigonometricfunction三角函數(shù)ComplextoReal-Imag復(fù)數(shù)的實(shí)部和虛部MinMax求最大值Real-ImagtoComplex實(shí)部和虛部合成復(fù)數(shù)Abs求絕對(duì)值A(chǔ)lgebraicConstraint強(qiáng)迫輸入信號(hào)為零Sign符號(hào)函數(shù)8.2Simulink模塊操作

一、模塊的編輯處理1.模塊的操作(1)添加模塊當(dāng)要把一個(gè)模塊添加到模型中,先在Simulink模塊庫(kù)中找到它,然后直接將這個(gè)模塊拖入模型窗口中即可。(2)選取模塊當(dāng)模塊已經(jīng)位于模型窗口中時(shí),只要用鼠標(biāo)在模塊上單擊就可以選中該模塊,這時(shí)模塊的四角上出現(xiàn)一些黑色的小方塊,這些小方塊就是該模塊的關(guān)鍵點(diǎn),拖動(dòng)這些黑色小方塊可以改變模塊的大小。2.模塊位置和外形的調(diào)整(1)調(diào)整模塊位置(2)調(diào)整模塊大?。?)調(diào)整模塊方向(4)調(diào)整模塊顏色和效果3.模塊名的處理(1)改變模塊名(2)隱藏模塊名(3)改變模塊名的位置4.復(fù)制和刪除模塊(1)復(fù)制模塊(2)刪除模塊二、模塊屬性和參數(shù)的設(shè)置

1.模塊參數(shù)的設(shè)置

Simulink中幾乎所有模塊的參數(shù)(Parameters)都允許用戶(hù)進(jìn)行設(shè)置,雙擊要設(shè)置的模塊就可以打開(kāi)模塊參數(shù)設(shè)置對(duì)話框,不同模塊參數(shù)設(shè)置對(duì)話框的項(xiàng)目會(huì)不同。2.模塊屬性的設(shè)置

與參數(shù)設(shè)置對(duì)話框不同,所有模塊的屬性(Properties)設(shè)置對(duì)話框都是一樣的。選定要設(shè)置屬性的模塊,然后單擊Edit→BlockProperties…選項(xiàng);或單擊右鍵在彈出的菜單中選擇BlockProperties…選項(xiàng)。該對(duì)話框有三個(gè)標(biāo)簽:General(通用)、BlockAnnotation(模塊注解)和Callbacks(回調(diào)函數(shù))。

三、模塊間的連線

1.連接兩個(gè)模塊方法是先移動(dòng)鼠標(biāo)指向模塊的輸出端,鼠標(biāo)的箭頭會(huì)變成十字形光標(biāo),這時(shí)按住鼠標(biāo)左鍵,拖動(dòng)鼠標(biāo)到另一個(gè)模塊的輸入端,當(dāng)十字形光標(biāo)出現(xiàn)“重影”時(shí),釋放鼠標(biāo)即完成了連接。2.模塊間連線的調(diào)整用鼠標(biāo)單擊連線,可以選中該連線。這時(shí)會(huì)看到線上的一些黑色小方塊,這些是連線的關(guān)鍵點(diǎn)。用鼠標(biāo)按住關(guān)鍵點(diǎn),拖動(dòng)即可以改變連線的方向。

3.連線的分支仿真時(shí)經(jīng)常會(huì)碰到需要把信號(hào)輸送到不同的接收端的情況,這時(shí)就需要分支結(jié)構(gòu)的連線??梢韵冗B好一條線,然后把鼠標(biāo)移到支線的起點(diǎn)位置,先按下〈Ctrl〉鍵,然后按住鼠標(biāo),將連線拖到目標(biāo)模塊,松開(kāi)鼠標(biāo)和〈Ctrl〉鍵即可。4.標(biāo)注連線雙擊需要標(biāo)注的連線,可以看到一個(gè)文本框,在里面輸入標(biāo)注文字單擊回車(chē)鍵確定即可。用鼠標(biāo)拖動(dòng)文本框還可以改變標(biāo)識(shí)的位置。另外,在Format→Port/SignalDisplays菜單下還有與連線標(biāo)注有關(guān)的命令:1)SampleTimeColor:將采樣時(shí)間不同的模塊和連線用不同的顏色顯示。2)PortDataTypes:在連線上顯示傳輸數(shù)據(jù)的類(lèi)型,如double、int32等。5.刪除連線如果想要?jiǎng)h除某條連線,可單擊要?jiǎng)h除的連線,此時(shí)連線上出現(xiàn)標(biāo)記點(diǎn),表示該連線已經(jīng)被選中,然后單擊模型窗口工具欄中的【剪切】按鈕或者直接單擊鍵盤(pán)上的〈Delete〉鍵,即可刪除該連線。8.3仿真模型的參數(shù)設(shè)置

選擇模型窗口Simulation→ConfigurationParameters…選項(xiàng),將出現(xiàn)仿真參數(shù)配置窗口。仿真參數(shù)配置窗口主要分為7個(gè)選項(xiàng)卡:Solver(解題器)、DataImport/Export(數(shù)據(jù)輸入/輸出),Optimization(優(yōu)化)、Diagnostics(診斷)、HardwareImplementation(硬件工具)、ModelReferencing(模型引用)和Real-TimeWorkshop(實(shí)時(shí)工作空間),其中Solver、DataImport/Export和Diagnostics三項(xiàng)經(jīng)常用到。

一、Solver選項(xiàng)卡

(1)Simulinktime

設(shè)置仿真起始時(shí)間和停止時(shí)間。(2)Solveroptions

仿真解題器的操作。根據(jù)類(lèi)型(Type)的變化分為:Variable-step(變步長(zhǎng)算法)和Fixed-step(固定步長(zhǎng)算法)。二、DataImport/Export選項(xiàng)卡

DataImport/Export選項(xiàng)卡主要用來(lái)設(shè)置Simulink與MATLAB工作空間交換數(shù)據(jù)的有關(guān)選項(xiàng)。(1)Loadfromworkspace

從工作空間中載入數(shù)據(jù)。1)Input:先選中Input核選框,在后面的編輯框內(nèi)輸入數(shù)據(jù)的變量名。2)Initialstate:表示模塊的初始狀態(tài)。對(duì)模塊進(jìn)行初始化時(shí),先選中Initialstate核選框,(2)Savetoworkspace

將輸出保存到工作空間。在Savetoworkspace區(qū)域中,可以選擇的輸出選項(xiàng)有:Time(時(shí)間),States(狀態(tài)),Output(輸出端口)和Finalstate(最終狀態(tài))。(3)Saveoptions保存操作。1)Format:可以選擇數(shù)組、結(jié)構(gòu)和包含時(shí)間的結(jié)構(gòu)三種形式。2)Limitdatapointstolast:用來(lái)限定保存到工作空間中的數(shù)據(jù)量。3)Decimation:從幾個(gè)數(shù)據(jù)中抽取一個(gè)數(shù)據(jù)輸出。4)Outputoptions:輸出操作設(shè)置,變步長(zhǎng)算法獨(dú)有。有三種輸出方式:Refineoutput(細(xì)化輸出)、Produceadditionaloutput(產(chǎn)生附加輸出)和Producespecifiedoutputonly(僅在指定的時(shí)刻產(chǎn)生輸出)。三、Diagnostics選項(xiàng)卡

在Diagnostics選項(xiàng)卡中,主要是指定系統(tǒng)對(duì)一些事件或仿真過(guò)程中可能遇到的情況做出什么反映。反應(yīng)的類(lèi)型有以下幾種:1)None:不做任何反應(yīng),不影響程序運(yùn)行。2)Warning:顯示警告信息,不影響程序的運(yùn)行。3)Error:顯示錯(cuò)誤信息,中止運(yùn)行的程序。

第9章MATLAB在信號(hào)與系統(tǒng)中的應(yīng)用與信號(hào)與系統(tǒng)有關(guān)的工具箱有:■符號(hào)數(shù)學(xué)工具箱(Symbolic

)■控制系統(tǒng)工具箱(Control

)■信號(hào)處理工具箱(Signal)主要內(nèi)容(9)■信號(hào)的時(shí)域表示■信號(hào)的時(shí)域運(yùn)算與變換■連續(xù)系統(tǒng)的時(shí)域分析■

離散系統(tǒng)的時(shí)域分析

9.1信號(hào)的時(shí)域表示一、連續(xù)信號(hào)的表示1、向量表示y=f(t),t=t1:p:t2p為間隔,t1,t2為起始和終止值。p越小越準(zhǔn)確例如:9.1信號(hào)的時(shí)域表示一、連續(xù)信號(hào)的表示2、符號(hào)表示y=sym(‘f(t)’),準(zhǔn)確表達(dá)例如:9.1信號(hào)的時(shí)域表示(1)單位階躍信號(hào):

在符號(hào)工具箱中,單位階躍信號(hào)為heaviside(t),

但不能用ezplot繪圖,因?yàn)閑zplot只能繪制在MATLAB和符號(hào)工具箱中均存在的函數(shù)。

1(t>=0)u(t)=0(t<0)3、常用連續(xù)信號(hào)舉例9.1信號(hào)的時(shí)域表示

可以在MATLAB中定義一個(gè)heaviside(t)函數(shù)。

Functiony=heaviside(t)y=(t>=0);然后再利用ezplot繪制,例如:ezplot(‘heaviside(t)’,[-1010])3、常用連續(xù)信號(hào)舉例9.1信號(hào)的時(shí)域表示(2)單位沖激信號(hào)δ(t)=0(t≠0);

用符號(hào)工具很難表示,一般是在0附近取一個(gè)很小的?,幅度為1/?。(3)符號(hào)函數(shù)可用函數(shù)sign(t)ezplot(‘sign(t)’,[-5,5])1(t>0)sgn(t)=-1(t<0)9.1信號(hào)的時(shí)域表示(4)復(fù)指數(shù)函數(shù)y=exp(a+jw)t

ezplot('real(exp((-0.5+10*j)*t))',[05])ezplot('imag(exp((-0.5+10*j)*t))',[05])9.1信號(hào)的時(shí)域表示二、離散信號(hào)的表示

1、用序列向量表示y=f(n)=[…,f(-1),f(0),f(1),..]需要注意的是:■向量下標(biāo)是從1開(kāi)始的,不能為負(fù)數(shù),在繪圖時(shí)必須指定n的范圍,且n必須為整數(shù)?!隼L圖時(shí)應(yīng)使用stem繪圖命令例如:y=[12321];n=(-2:2),stem(n,y)9.1信號(hào)的時(shí)域表示二、離散信號(hào)的表示2、由連續(xù)信號(hào)抽樣得到對(duì)連續(xù)信號(hào)y=f(t),令t=nTs,y(n)=f(nTs)例如:n=(0:10);y=sin(2*pi*n*0.1);stem(n,y)9.1信號(hào)的時(shí)域表示

3、常用離散信號(hào)(1)單位階躍信號(hào)例如:n=(-5:5);y=heaviside(n);stem(n,y)(2)單位沖激信號(hào)例如:y=[00100];n=(-2:2);stem(n,y);1(n>=0)u(n)=0(n<0)1(n=0)δ(n)=0(n≠0)9.2信號(hào)的時(shí)域運(yùn)算與變換一、連續(xù)信號(hào)的時(shí)域運(yùn)算利用符號(hào)數(shù)學(xué)的函數(shù)可對(duì)連續(xù)信號(hào)進(jìn)行運(yùn)算。1、加減例如:symst;y=sin(2*pi*t)+sin(4*pi*t)ezplot(y)9.2信號(hào)的時(shí)域運(yùn)算與變換一、連續(xù)信號(hào)的時(shí)域運(yùn)算2、相乘例如:symst;y=sin(2*pi*t)*sin(4*pi*t);ezplot(y)y1=sym(‘sin(2*pi*t)*heaviside(t)’);ezplot(y1,[-5,5])9.2信號(hào)的時(shí)域運(yùn)算與變換二、連續(xù)信號(hào)的時(shí)域變換

在符號(hào)工具箱中有一個(gè)函數(shù):subs(S,old,new)

將符號(hào)函數(shù)S中的old變量替換為new例如:symsab;subs(a+b,a,4)=4+b1、移位例如:y=sym(‘heaviside(t)’);y1=subs(y,t,t-2);ezplot(y1,[-5,5]);9.2信號(hào)的時(shí)域運(yùn)算與變換2、反折例如:y1=subs(y,t,-t);ezplot(y1,[-5,5]);3、尺度變換例如:y1=subs(y,t,t/2);ezplot(y1,[-5,5]);9.2信號(hào)的時(shí)域運(yùn)算與變換例如:已知y(t)=(1+t/2)*[u(t+2)-u(t-2)]

畫(huà)出y(t-2),y(-t),y(2t)的波形symsty=sym(‘(1+t/2)*(heaviside(t+2)-heaviside(t-2))’)y1=subs(y,t,t-2);ezplot(y1,[-5,5])y2=subs(y,t,-t);ezplot(y2,[-5,5])y3=subs(y,t,2*t);ezplot(y3,[-2,2])9.2信號(hào)的時(shí)域運(yùn)算與變換三、離散信號(hào)的時(shí)域運(yùn)算和變換

離散信號(hào)運(yùn)算和變換只能用向量表示,而不能用符號(hào)表示。

參與運(yùn)算的序列長(zhǎng)度應(yīng)相同,否則應(yīng)補(bǔ)0。例如:f1=[-2–1012],(n1=-2–1012)f2=[1,1,1](n2=-101)f1+f2=[-20122]對(duì)于序列長(zhǎng)度不同或下標(biāo)不同,需編程解決。9.3連續(xù)系統(tǒng)的時(shí)域分析一、卷積積分f1(t)和f2(t)卷積為可用符號(hào)工具箱中的積分函數(shù):int(S)例如:symstaotf1=sym('Heaviside(t)-Heaviside(t-1)');f2=t*exp(-t);f=int(subs(f1,t,tao)*subs(f2,t,t-tao),tao,-inf,inf);卷積積分也可用離散卷積的方法求的,離散間隔越小越接近。9.3連續(xù)系統(tǒng)的時(shí)域分析二、連續(xù)系統(tǒng)的響應(yīng)設(shè)連續(xù)系統(tǒng)的微分方程為:利用控制工具箱(Control)中的有關(guān)函數(shù)可以分析連續(xù)系統(tǒng)的響應(yīng)用向量來(lái)描述系數(shù):9.3連續(xù)系統(tǒng)的時(shí)域分析1、沖激響應(yīng)當(dāng)輸入為沖激信號(hào)時(shí)產(chǎn)生的零狀態(tài)響應(yīng)稱(chēng)為系統(tǒng)的沖激響應(yīng)。求連續(xù)系統(tǒng)沖激響應(yīng)的函數(shù)為:impulse()9.3連續(xù)系統(tǒng)的時(shí)域分析1、沖激響應(yīng)(1)格式1:impulse(b,a)

以默認(rèn)方式繪出向量a,b定義的連續(xù)系統(tǒng)的沖激響應(yīng)的時(shí)域波形。例如:連續(xù)系統(tǒng)的微分方程為:

y’’(t)+5y’(t)+6y(t)=3f’(t)+2f(t)a=[156];b=[32];impulse(b,a)9.3連續(xù)系統(tǒng)的時(shí)域分析

(2)格式2:impulse(b,a,t)

繪出連續(xù)系統(tǒng)在0-t時(shí)間范圍內(nèi)的沖激響應(yīng)的時(shí)域波形例如:impulse(b,a,10)(3)格式3:impulse(b,a,t1:p:t2)

繪出連續(xù)系統(tǒng)在t1-t2時(shí)間的沖激響應(yīng)的時(shí)域波形例如:impulse(b,a,1:0.1:10)9.3連續(xù)系統(tǒng)的時(shí)域分析

(4)格式4:y=impulse(b,a,t1:p:t2)返回在t1-t2時(shí)間內(nèi)的沖激響應(yīng)的數(shù)值,不繪圖。9.3連續(xù)系統(tǒng)的時(shí)域分析2、階躍響應(yīng)求系統(tǒng)沖激響應(yīng)的函數(shù)為:step()格式和用法同impulse完全相同。9.3連續(xù)系統(tǒng)的時(shí)域分析3、系統(tǒng)響應(yīng)求連續(xù)系統(tǒng)響應(yīng)的函數(shù)為:lsim()

(1)格式1:lsim(b,a,x,t)b,a是描述系統(tǒng)的微分方程的系數(shù)。x,t是輸入信號(hào)的行向量。繪出系統(tǒng)響應(yīng)。例如:a=[121];b=[12];t=0:0.1:10;x=sin(2*pi*t);lsim(b,a,x,t)9.3連續(xù)系統(tǒng)的時(shí)域分析3、系統(tǒng)響應(yīng)(2)格式2:y=lsim(b,a,x,t)返回響應(yīng)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論