第一篇:Matlab應(yīng)用課程設(shè)計[本站推薦]
課程設(shè)計名稱:Matlab應(yīng)用課程設(shè)計
課程設(shè)計題目:題目(如:Matlab運算與受控源電阻電路分析)
初始條件:
1.Matlab7.0以上版本軟件;
2.課程設(shè)計輔導(dǎo)資料:“Matlab語言基礎(chǔ)及使用入門”、“Matlab及在電子信息課程中的應(yīng)用”、線性代
數(shù)及相關(guān)書籍等;
3.先修課程:高等數(shù)學(xué)、線性代數(shù)、電路、Matlab應(yīng)用實踐及信號處理類相關(guān)課程等。
要求完成的主要任務(wù):(包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)
1.課程設(shè)計時間:1.5周,分散;
2.課程設(shè)計內(nèi)容:根據(jù)指導(dǎo)老師給定的7套題目,按規(guī)定選擇其中1套完成;
3.本課程設(shè)計統(tǒng)一技術(shù)要求:研讀輔導(dǎo)資料對應(yīng)章節(jié),對選定的設(shè)計題目進行理論分析,針對具體設(shè)
計部分的原理分析、建模、必要的推導(dǎo)和可行性分析,畫出程序設(shè)計框圖,編寫程序代碼(含注釋),上機調(diào)試運行程序,記錄實驗結(jié)果(含計算結(jié)果和圖表等),并對實驗結(jié)果進行分析和總結(jié)。具體設(shè)計要求包括:
① 初步了解Matlab、熟悉Matlab界面、進行簡單操作;
② MATLAB的數(shù)值計算:創(chuàng)建矩陣、矩陣運算、多項式運算、線性方程組、數(shù)值統(tǒng)計;
③ 基本繪圖函數(shù):plot, plot3, mesh, surf等,要求掌握以上繪圖函數(shù)的用法、簡單圖形標(biāo)注、簡單
顏色設(shè)定等;
④ 使用文本編輯器編輯m文件,函數(shù)調(diào)用;
⑤ 能完成簡單的電路Matlab編程分析;
⑥ 按要求參加課程設(shè)計實驗演示和答辯等。
4.課程設(shè)計說明書按學(xué)校“課程設(shè)計工作規(guī)范”中的“統(tǒng)一書寫格式”撰寫,具體包括:
① 目錄;
② 與設(shè)計題目相關(guān)的理論分析、歸納和總結(jié);
③ 與設(shè)計內(nèi)容相關(guān)的原理分析、建模、推導(dǎo)、可行性分析;
④ 程序設(shè)計框圖、程序代碼(含注釋)、程序運行結(jié)果和圖表、實驗結(jié)果分析和總結(jié);
⑤ 課程設(shè)計的心得體會(至少500字);
⑥ 參考文獻(不少于5篇);
⑦ 其它必要內(nèi)容等。
時間安排:1.5周(分散進行)
指導(dǎo)老師:電信1104李景松祝立華
電信1105祝立華闕大順
電信1106闕大順李景松
第二篇:MATLAB通信原理課程設(shè)計報告
MATLAB通信原理課程設(shè)計報告
目 錄
1課題名稱.....................................................................................................................1 2課程設(shè)計的方案和基本原理.....................................................................................1
2.1信息論基本計算...............................................................................................1 2.2數(shù)字信號基帶傳輸系統(tǒng)...................................................................................1 3課程設(shè)計步驟.............................................................................................................3
3.1信息論基本計算的設(shè)計步驟...........................................................................3 3.2數(shù)字信號基帶傳輸系統(tǒng)的設(shè)計步驟...............................................................3 4課程設(shè)計結(jié)果和結(jié)果分析論證.................................................................................4
4.1信息論的基本運算結(jié)果...................................................................................4 4.2數(shù)字信號基帶傳輸系統(tǒng)的設(shè)計結(jié)果...............................................................6
5、心得體會................................................................................................................11 6附件...........................................................................................................................11 6.1信息論基本計算.............................................................................................11 6.2數(shù)字信號基帶傳輸系統(tǒng).................................................................................14 7 評分表......................................................................................錯誤!未定義書簽。
1課題名稱
(1)信息論基本計算。
(3)數(shù)字信號基帶傳輸系統(tǒng)設(shè)計
2課程設(shè)計的方案和基本原理
2.1信息論基本計算
2.1.1平均信息量:平均每個符號所能提供的信息量。
H(X)。
2.1.2離散信道容量:信道容量是信道所能傳送的最大的信息量。C=maxI(X;Y)R=I(X;Y)=H(X)-H(XY)2.1.3信源編碼過程:Huffman編碼的意義是,用最少的編碼長度來表達符號的信息。為了使平均碼長度最小,將發(fā)生概率較大的符號用比較短的碼組來表示,將發(fā)生概率較小的符號用較長的碼組實現(xiàn),以得到最佳的變長編碼,減少冗余度,提高系統(tǒng)傳輸?shù)男省?/p>
2.2數(shù)字信號基帶傳輸系統(tǒng)
2.2.1數(shù)字基帶信號的碼型:由于數(shù)字基帶信號是數(shù)字信息的電脈沖表示,不同形式的基帶信號(又稱為碼型)有不同的頻譜結(jié)構(gòu)和功率譜分布。不同的碼型有不同的優(yōu)點,常用的碼型有單/雙極性碼、非歸零/歸零碼、數(shù)字雙相碼(曼徹斯特碼)、密勒碼、AMI碼、HDB3碼。
2.2.2單/雙極性碼:單極性碼是用電平1來表示二元信息中的‘1’,用電平0來表示二元信息中的0,電平在整個碼元的持續(xù)時間里保持不變,記做NRZ碼。雙極性碼與單極性碼的區(qū)別僅在于它用電平-1來表示二元信息中的‘0’。
2.2.3非歸零/歸零碼:歸零碼與非歸零碼的區(qū)別僅在于,非歸零碼在整個碼元持續(xù)時間內(nèi)保持電平值不變,而歸零碼的碼元持續(xù)時間的前一半時間內(nèi)保持,而后一半時間內(nèi)回到0.1 2.2.4數(shù)字雙相碼(曼徹斯特碼):此種碼型采用在一個碼元的持續(xù)時間中央時刻從0到1的跳變來表示1,從1到0的跳變來表示0。或者與之相反用在一個碼元的持續(xù)時間中央時刻從0到1的跳變來表示0,從1到0的跳變來表示1。
2.2.5密勒碼:該碼型是雙相碼的變型。它采用碼元中央時刻跳變表示信息1即前半時間的電平和前一碼元的后半時間的電平相同,中間跳變。遇到信息0做如下處理:首先對0的碼元在整個持續(xù)時間內(nèi)保持同一電平值,其次若此0的前一信息是一則碼元的電平同前面信息1的碼元后半時間電平相同,若前一信息為0,則與前面碼元的電平相反。
2.2.6 AMI碼、HDB3碼: AMI碼是傳號交替反轉(zhuǎn)碼。其編碼規(guī)則是將消息碼中的“1”交替變成“+1”和“-1”,將消息碼中的“0”仍保持為“0”。HDB3碼的全稱是3階高密度雙極性碼。首先將信息碼變換成AMI碼,然后檢查AMI碼中連0的情況,沒有發(fā)現(xiàn)4個以上連0的碼元串時碼型不需變換,仍為AMI碼的形狀。若發(fā)現(xiàn)4個以上連0的碼元串時,則根據(jù)相應(yīng)規(guī)則把第四個0變換成相應(yīng)符號。
2.2.7碼型的功率譜分布:數(shù)字基帶信號一般是隨機信號,因此分析隨機信號的頻譜特性要用功率諾密度來分析。一般來說,求解功率譜是一件相當(dāng)困難的事,但由于上述幾種碼型比較簡單,我們可以求出其功率譜密度函數(shù)。
對單極性非歸零碼、單極性歸零碼、雙極性非歸零碼和雙極性歸零碼這4種碼。由于統(tǒng)計的獨立性,課由由功率譜公式畫出功率譜波形圖。數(shù)字雙相碼的功率相關(guān)公式如下:“y=sin(pi*x/2);y=y./(pi*x/2);y(1)=1;mache=sin(pi*x/2).*sin(pi*x/2);mache=mache.*y;mache=mache.*y”。密勒碼的相關(guān)功率公式如下:
“x=x*pi;miler=(23-2*cos(x)-22*cos(2*x)-12*cos(3*x)+5*cos(4*x)+12*cos(5*x)+2*cos(6*x)-8*cos(7*x)+2*cos(8*x))./(17+8*cos(8*x));t=x.*x;miler=miler./t;”
對于AMI碼和HDB3碼的功率譜函數(shù),則需要進行實際的碼型進行分析。
3課程設(shè)計步驟
3.1信息論基本計算的設(shè)計步驟
3.1.1信源平均信息量的計算(以高斯分布的信源為例):
通過系統(tǒng)產(chǎn)生一個高斯隨機信源,再求出它的平均信息量。3.1.2離散信道容量的計算(以輸入符號等概分布為例):
編寫hmessage函數(shù)求出平均互信息,編寫dmessage函數(shù),求出離散信息熵,調(diào)用hmessage函數(shù)和dmessage函數(shù)得出hf和hx,最后信道容量c=hx-hf。3.1.3信源編碼過程(以Huffman編碼為例):
先編寫huffman函數(shù),對系列排序并求出huffman編碼。調(diào)用huffman函數(shù)和dmessage函數(shù),得出編碼后的碼字。
3.2數(shù)字信號基帶傳輸系統(tǒng)的設(shè)計步驟
3.2.1單/雙極性歸零/非歸零碼:先對原始碼型進行相應(yīng)的碼型變換,畫出碼型子圖,再由功率譜公式畫出功率譜波形圖。
3.2.2數(shù)字雙相碼:先進行碼型變換,再畫出功率譜,功率相關(guān)公式如下:“y=sin(pi*x/2);y=y./(pi*x/2);y(1)=1;mache=sin(pi*x/2).*sin(pi*x/2);mache=mache.*y;mache=mache.*y”。
3.2.3密勒碼:密勒碼的相關(guān)功率公式如下:
“x=x*pi;miler=(23-2*cos(x)-22*cos(2*x)-12*cos(3*x)+5*cos(4*x)+12*cos(5*x)+2*cos(6*x)-8*cos(7*x)+2*cos(8*x))./(17+8*cos(8*x));t=x.*x;miler=miler./t;”
3.2.4AMI碼:編寫AMI函數(shù),求的AMI碼型變換。編寫t2f函數(shù),功能是將時域信號做傅里葉變換到頻域。為了求AMI碼的功率譜密度,編寫AMIpower函數(shù),該函數(shù)中又調(diào)用了t2f函數(shù)。3.2.5HDB3碼:編寫HDb3函數(shù)和t2f函數(shù),分別實現(xiàn)HDb3編碼和傅里葉變換。調(diào)用HDb3函數(shù)和t2f函數(shù),得出原序列圖、編碼后的序列圖和功率譜圖。
4課程設(shè)計結(jié)果和結(jié)果分析論證
4.1信息論的基本運算結(jié)果
4.1.1信源平均信息量的計算(以高斯分布的信源為例):
圖4.1.1連續(xù)信源平均信息量
4.1.2離散信道容量的計算(以輸入符號等概分布為例)4
圖4.1.2離散信道容量
信道容量為信源的平均信息量減去互信息量。
4.1.3信源編碼過程(以Huffman編碼為例)
圖4.1.3 huffman編碼
哈弗曼編碼是把出現(xiàn)概率較大的用較短的碼元來實現(xiàn),概率出現(xiàn)較小的用較長的碼元實現(xiàn)。4.2數(shù)字信號基帶傳輸系統(tǒng)的設(shè)計結(jié)果
4.2.1單極性非歸零碼及其功率譜
圖4.2.1單極性非歸零碼碼型和功率譜
輸入的序列是x=[1 1 0 1 0 0 1 0 1 0 0 1],輸出的序列是y=[1 1 0 1 0 0 1 0 1 0 0 1]經(jīng)編碼規(guī)則驗證是正確的。功率譜顯示,碼型的功率分布有分段性,并以某些頻率為中心。
4.2.2單極性歸零碼及其功率譜
圖4.2.2單極性歸零碼碼型和功率譜
由圖可知,輸入的序列是x=[1 1 0 1 0 0 1 0 1 0 0 1],輸出的序列是y=[10 10 00 10 00 00 10 00 10 00 00 10] 經(jīng)編碼規(guī)則驗證是正確的。功率譜顯示,碼型的功率分布有分段性,并以某些頻率為中心。
4.2.3雙極性非歸零碼及其功率譜
圖4.2.3雙極性非歸零碼碼型和功率譜
由圖可知輸入的序列為x=[1 1 0 1 0 0 1 0 1 0 0 1],輸出的序列為y=[1 1-1 1-1-1 1-1 1-1-1 1], 經(jīng)編碼規(guī)則驗證是正確的。功率譜顯示,碼型的功率分布有分段性,并以某些頻率為中心。
4.2.4雙極性歸零碼及其功率譜密度
圖4.2.4雙極性歸零碼碼型和功率譜
由圖可知,輸入序列為x=[1 1 0 1 0 0 1 0 1 0 0 1],輸出序列為y=[10 10-10 10-10-10 10-10 10-10-10 10]。經(jīng)編碼規(guī)則驗證是正確的。功率譜顯示,碼型的功率分布有分段性,并以某些頻率為中心。
4.2.5數(shù)字雙相碼及其功率譜
圖4.2.5數(shù)字雙相碼碼型和功率譜
由圖可知,輸入的序列為x=[1 1 0 1 0 0 1 0 1 0 0 1],輸出的序列為y=[10 10 01 10 01 01 10 01 10 01 01 10].功率譜顯示,碼型的功率分布有分段性。
4.2.6密勒碼及其功率譜
圖4.2.6密勒碼碼型和功率譜
信息的輸入序列是x=[1 1 0 1 0 0 1 0 1 0 0 1]。
4.2.7 AMI碼及其功率譜
圖4.2.7AMI碼碼型和功率譜
輸入序列是x=[1 1 0 1 0 0 1 0 1 0 0 1]。
4.2.8 HDB3碼及其功率譜
圖4.2.8 HDB3碼碼型和功率譜
由此圖的功率譜與AMI碼的功率譜比較可知,HDB3碼與AMI碼是相似的,HDB3碼是AMI碼的變形。
5、心得體會
6附件
6.1信息論基本計算
6.1.1、信源平均信息量的計算(高斯分布的信源)x=randn(1,100000);%產(chǎn)生N(0,1)高斯源 px=1/sqrt(2*pi)*exp(-(x-1).^2/2);%計算概率 l=-mean(log2(px))%計算熵
6.1.2、編程實現(xiàn)離散信道容量的計算(以輸入符號等概分布為例)function r=dmessage(x,n)%參數(shù)x表示概率矩陣,n是符號的數(shù)目 r=0;for i=1:n r=r-x(i)*log(x(i))/log(2);end disp('此離散信源的平均信息量為:');r %直接在命令窗口中調(diào)用dmessage函數(shù),也可以在其它函數(shù)中調(diào)用 dmessage([0.25,0.25,0.25,0.25],4)
6.1.3、離散信道容量的計算 %求互信息的函數(shù)文件如下 function r=hmessage(x,f,nx,my)%x為輸出的信源分布,f為轉(zhuǎn)移概率矩陣,nx為輸出的符號可選個數(shù) %my為輸出的符號個數(shù) sum=0;for i=1:nx for j=1:my 11 %通過式子p(x,y)=p(x)p(y/x)來求p(x,y),用t表示 t=f(i,j)*x(i);%求平均互信息量 if t~=0 sum=sum-t*log(f(i,j))/log(2);end;end;end;r=sum;disp('平均互信息量為:');%利用函數(shù)dmessage來求信源的熵,利用函數(shù)hmessage來求平均互信息量 x=[0.25,0.25,0.25,0.25];f1=[1/2,1/4,1/4,0,0,0 0,1/2,1/4,1/4,0,0 0,0,1/2,1/4,1/4,0 0,0,0,1/2,1/4,1/4,];hf1=hmessage(x,f1,4,6);hx=dmessage(x,4);c1=hx-hf1 %信道容量
6.1.4、哈弗曼編碼的實現(xiàn) p=[1/4,1/4,1/4,1/8,1/8];[h,l]=huffman1(p)%哈弗曼編碼的實現(xiàn)函數(shù)如下 function [h,l]=huffman(p)if(length(find(p<0))~=0)error('Not a prob,negative component');end if(abs(sum(p)-1)>10e-10)error('Not a prob.vector,component do not add to 1')end n=length(p);q=p;12 m=zeros(n-1,n);for i=1:n-1 [q,l]=sort(q);m(i,:)=[l(1:n-i+1),zeros(1,i-1)];q=[q(1)+q(2),q(3:n),1];end for i=1:n-1 c(i,:)=blanks(n*n);end c(n-1,n)='0';c(n-1,2*n)='1';for i=2:n-1
c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))-(n-2):n*(find(m(n-i+1,:)==1)));c(n-i,n)='0';c(n-i,n+1:2*n-1)=c(n-i,1:n-1);c(n-i,2*n)='1';for j=1:i-1
c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)==j+1)-1)+1:n*find(m(n-i+1,:)==j+1));end;end for i=1:n h(i,1:n)=c(1,n*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*n);ll(i)=length(find(abs(h(i,:))~=32));end l=sum(p.*ll);%在命令窗口或M文件里調(diào)用haffman函數(shù) p=[1/2,1/4,1/8,1/16,1/16];[h,l]=huffman(p)
6.2數(shù)字信號基帶傳輸系統(tǒng)
6.2.1、單極性非歸零碼以及功率譜的實現(xiàn) function y=djx(x)%本函數(shù)實現(xiàn)將輸入的一段二進制代碼編碼為相應(yīng)的單極性非歸零碼輸出 %輸入x為二進制碼,輸出y為編好的碼
%給出計算每一個碼元的點數(shù),因為我們只有用離散的點來得出連續(xù)的函數(shù)表示 grid=300;t=0:1/grid:length(x);for i=1:length(x)if(x(i)==1)for j=1:grid y((i-1)*grid+j)=1;end else for j=1:grid y((i-1)*grid+j)=0;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);hold on;axis([0,i,m-0.1,M+0.1]);%采用title命令來實現(xiàn)標(biāo)記出各碼元對應(yīng)的二元信息
title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=100;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);14 y(1)=1;dan1=y.*y;dan1=dan1/4;subplot(2,1,2);subplot(2,1,2);plot(x,dan1);axis([1,4,0,0.015]);title('單極性非歸零碼的功率譜');%函數(shù)調(diào)用t=[1 1 0 1 0 0 1 0 1 0 0 1];djx(t);
6.2.2、單極性歸零碼及其功率譜實現(xiàn) function y=djxglm(x)grid=200;t=0:1/grid:length(x);for i=1:length(x)if(x(i)==1)for j=1:grid/2 y(grid/2*(2*i-2)+j)=1;y(grid/2*(2*i-1)+j)=0;end else for j=1:grid/2 y(grid*(i-1)+j)=0;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);title(' 1 1 0 1 0 0 1 15
0 1 0 0 1 ');fs=50;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=2;dan2=y.*y;dan2=dan2/4;subplot(2,1,2);plot(x,dan2);axis([1,5,0,0.05]);title('單極性歸零碼的功率譜');%在命令窗口或M文件中調(diào)用函數(shù) t=[1 1 0 1 0 0 1 0 1 0 0 1];djxglm(t);
6.2.3、雙極性非歸零碼及其功率譜的實現(xiàn) function y=sjx(x)%本函數(shù)實現(xiàn)將輸入的一段二進制代碼編碼為相應(yīng)的雙極性非歸零碼輸出 %輸入x為二進制碼,輸出y為編好的碼 grid=300;t=0:1/grid:length(x);for i=1:length(x)if(x(i)==1)for j=1:grid y((i-1)*grid+j)=1;end else for j=1:grid y((i-1)*grid+j)=-1;end 16 end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令來實現(xiàn)標(biāo)記出各碼元對應(yīng)的二元信息
title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=100;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=1;dan1=y.*y;dan1=dan1/4;subplot(2,1,2);plot(x,dan1);axis([1,4,0,0.02]);title('雙極性非歸零碼的功率譜');%在命令窗口或M文件中調(diào)用函數(shù) t=[1 1 0 1 0 0 1 0 1 0 0 1];sjx(t);
6.2.4、雙極性歸零碼及其功率譜的實現(xiàn) function y=sjxglm(x)%本函數(shù)實現(xiàn)將輸入的一段二進制代碼編碼為相應(yīng)的雙極性歸零碼輸出%輸入x為二進制碼,輸出y為編好的碼 grid=300;t=0:1/grid:length(x);for i=1:length(x)17
if(x(i)==1)for j=1:grid/2 y(grid/2*(2*i-2)+j)=1;y(grid/2*(2*i-1)+j)=0;end else for j=1:grid/2 y(grid/2*(2*i-2)+j)=-1;y(grid/2*(2*i-1)+j)=0;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令來實現(xiàn)標(biāo)記出各碼元對應(yīng)的二元信息title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=50;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=2;dan2=y.*y;dan2=dan2/4;subplot(2,1,2);plot(x,dan2);axis([1,5,0,0.025]);title('雙極性歸零碼的功率譜');%在命令窗口或M文件中調(diào)用函數(shù)
t=[1 1 0 1 0 0 1 0 1 0 0 1];sjxglm(t);
6.2.5、數(shù)字雙相碼及其功率譜的實現(xiàn) function y=szsxm(x)%本函數(shù)實現(xiàn)將輸入的一段二進制代碼編碼為相應(yīng)的數(shù)字雙相碼輸出 %輸入x為二進制碼,輸出y為編好的碼 grid=300;t=0:1/grid:length(x);for i=1:length(x)if(x(i)==1)for j=1:grid/2 y(grid/2*(2*i-2)+j)=1;%用從1到0的電平跳變來表示‘1’ y(grid/2*(2*i-1)+j)=0;end else for j=1:grid/2 y(grid/2*(2*i-2)+j)=0;%用從0到1的電平跳變來表示‘0’ y(grid/2*(2*i-1)+j)=1;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令來實現(xiàn)標(biāo)記出各碼元對應(yīng)的二元信息
title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=100;x=1:1/fs:5;19
y=sin(pi*x/2);y=y./(pi*x/2);y(1)=1;mache=sin(pi*x/2).*sin(pi*x/2);mache=mache.*y;mache=mache.*y;subplot(2,1,2);plot(x,mache);axis([1,5,0,0.5]);title('數(shù)字雙相碼的功率譜');%在命令窗口或M文件中調(diào)用函數(shù) t=[1 1 0 1 0 0 1 0 1 0 0 1];szsxm(t);
6.2.6、密勒碼及其功率譜的實現(xiàn) function y=mlm(x)%該函數(shù)實現(xiàn)密勒編碼,輸入碼序列為x grid=100;t=0:1/grid:length(x);%定義時間序列 i=1;%由于第一碼元的編碼不定,我們直接給出 if(x(i)==1)for j=1:grid/2 y(grid/2*(2*i-2)+j)=0;%前半時間為0 y(grid/2*(2*i-1)+j)=1;%后半時間為1 end else for j=1:grid%若輸入0 y(grid*(i-1)+j)=0;%碼元持續(xù)時間內(nèi)為0 end end for i=2:length(x)%開始進行密勒編碼
if(x(i)==1)%若輸入信息為1 for j=1:grid/2 y(grid/2*(2*i-2)+j)=y(grid/2*(2*i-3)+grid/4);%前半時間與前一碼元后半時間值相同
y(grid/2*(2*i-1)+j)=1-y(grid/2*(2*i-2)+j);%后半時間與前半時間相反 end else if(x(i-1)==1)%反之,若前一信息為1,輸入為0 for j=1:grid y(grid*(i-1)+j)=y(grid/2*(2*i-3)+grid/4);%所有時間與前一碼元后半時間值相同 end else%前一信息為0 for j=1:grid y(grid*(i-1)+j)=1-y(grid/2*(2*i-3)+grid/4);%所有時間與前一碼元后半時間值相反 end end end end y=[y,y(i*grid)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令來實現(xiàn)標(biāo)記出各碼元對應(yīng)的二元信息
title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=100;x=1:1/fs:5;x=x*pi;miler=(23-2*cos(x)-22*cos(2*x)-12*cos(3*x)+5*cos(4*x)+12*cos(5*x)+2*c 21 os(6*x)-8*cos(7*x)+2*cos(8*x))./(17+8*cos(8*x));t=x.*x;miler=miler./t;miler(1)=0.2;x=x/pi;subplot(2,1,2);plot(x,miler);axis([1,5,0,0.3]);title('密勒碼的功率譜')%下面是mlm函數(shù)的調(diào)用 t=[1 1 0 1 0 0 1 0 1 0 0 1];mlm(t);
6.2.7、AMI碼及其功率譜的實現(xiàn) *t2f.m文件:傅里葉變換 function X=t2f(x,dt)X=fftshift(fft(x))*dt;
function y=AMI(x)grid=300;t=0:1/grid:length(x);i=1;if(x(i)==1)for j=1:grid y(j)=1;h=1;end else for j=1:grid y(j)=0;end end for i=2:length(x)if(x(i)==1)if h==1 for j=1:grid y(grid*(i-1)+j)=-1;h=-1;end else if h==-1 for j=1:grid y(grid*(i-1)+j)=1;h=1;end end end else for j=1:grid y(grid*(i-1)+j)=0;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令來實現(xiàn)標(biāo)記出各碼元對應(yīng)的二元信息title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');Rt=0.5;k=14;N=2^k;L=64;M=N/L;Rb=2;Ts=1/Rb dt=Ts/L;df=1/(N*dt)T=N*dt Bs=N*df/2;t=[-T/2+dt/2:dt:T/2];f=[-Bs+df/2:df:Bs];Ep=zeros(size(f));for ii=1:50 n=1;while rem(n,2)~=0, a=round(rand(1,M));n=length(find(a==1));end bb=find(a==1);cc=bb(1:2:length(bb));b=a;
b(cc)=-ones(size(cc));ami=zeros(1,N);for tt=1:Rt*Ts/dt;ami(tt+[0:M-1]*L)=b;end AMI=t2f(ami,dt);P=AMI.*conj(AMI)/T;Ep=(Ep*(ii-1)+P)/ii;end aa=30+10*log10(Ep+eps);subplot(2,1,2);plot(f,aa);axis([-5,+5,-50,50]);title('AMI功率譜密度')%AMI函數(shù)的調(diào)用
t=[1 1 0 1 0 0 1 0 1 0 0 1];AMI(t);
6.2.8、HDB3碼及其功率譜的實現(xiàn) function X=t2f(x,dt)X=fftshift(fft(x))*dt;*HDB3_encoding.m文件:
function [changed_hdb3]=Hdb3_encoding(pcm)last_V=-1;last_one=-1;M=length(pcm);changed_hdb3=zeros(size(pcm));count=0;for i=1:M if(pcm(i)==1)changed_hdb3(i)=-last_one;last_one=changed_hdb3(i);count=0;else count=count+1;
if(count==4)count=0;changed_hdb3(i)=-last_V;last_V=changed_hdb3(i);if(i>4)if(changed_hdb3(i)*last_one==-1)changed_hdb3(i-3)=changed_hdb3(i);end end last_one=changed_hdb3(i);end end end %函數(shù)調(diào)用 clear all close all k=input(‘取樣點數(shù)=2^k,k=[4]’);if isempty(k), k=14;end N=2^k;L=64;M=N/L;Rb=1;Ts=1/Rb;dt=Ts/L;df=1/(N*dt);T=N*dt;Bs=N*df/2;t=[-T/2+dt/2:dt:T/2];f=[-Bs+df/2:df:Bs];Ep=zeros(size(f));for ii=1:30 a=rand(1,M)>0.75;b=Hdb3_encoding(a);hdb=zeros(L,M);init=zeros(L,M);for loop=1:L/2 init(loop,:)=a;end for loop=1:L/2 hdb(loop,:)=b;end hdb=reshape(hdb,1,N);init=reshape(init,1,N);HDB=t2f(hdb,dt);P=HDB.*conj(HDB)/T;Ep=(Ep*(ii-1)+P)/ii;end init figure(9)subplot(3,1,1)plot(t,init,'m')grid on axis([0,T/10,-1.5,1.5])set(gca,'XTick',[0:1:T/10])xlabel('t(Tb)')ylabel('s(t)')title(‘原始序列’)subplot(3,1,2)plot(t,hdb,'b')grid on axis([0,T/10,-1.5,1.5])set(gca,'XTick',[0:1:T/10])xlabel('t(Tb)')ylabel('s(t)')title(‘HDB3編碼序列’)subplot(3,1,3)aa=30+10*log10(Ep+eps);plot(f,aa,'r')grid on axis([-5,5,-50,50])xlabel('f(Rb)')ylabel('Ps(f)')title(‘HDB3碼功率譜密度’)
第三篇:Matlab課程設(shè)計報告(簡單計算器)
1、設(shè)計目的
運用MATLAB實現(xiàn)MATLAB的GUI程序設(shè)計。
2、題目分析
2.1課程設(shè)計的基本要求:
A.熟悉和掌握MATLAB 程序設(shè)計方法。B.掌握MATLAB GUI程序設(shè)計。2.2課程設(shè)計的內(nèi)容
要求利用MATLAB GUI設(shè)計實現(xiàn)一個圖形用戶界面的計算器程序,要求實現(xiàn): A.具有友好的用戶圖形界面。實現(xiàn)十進制數(shù)的加、減、乘、除、乘方、取模等簡單計算。
B.科學(xué)計算函數(shù),包括(反)正弦、(反)余弦、(反)正切、(反)余切、開方、指數(shù)等函數(shù)運行。
C.能夠保存上次歷史計算的答案,顯示答案存儲器中的內(nèi)容。D.有清除鍵,能清除操作。
E.獨立存儲器功能,使之可以直接輸入存儲器,可與存儲器中的數(shù)值相加減。能夠清除獨立存儲器中的內(nèi)容。2.3題目分析
本題目通過MATLAB的GUI程序設(shè)計較為簡單,在GUI設(shè)計中主要用到三種控件,顯示框用到文本編輯框(edit text),說明框用到靜態(tài)文本框(Static text),數(shù)字以及運算等按鈕用到命令按鈕(push button)。然后再通過各個按鈕的回調(diào)函數(shù),實現(xiàn)簡單的計算功能。
3、總體設(shè)計
首先用MATLAB GUI功能,在繪制一個靜態(tài)文本框和一個文本編輯框,以及32個命令按鈕,調(diào)整好各控件大小、顏色,整體布局如圖所示:
然后通過雙擊個按鈕來改寫其屬性,在m文件中編寫其回調(diào)函數(shù),最后在運行調(diào)試。
4、具體設(shè)計 4.1 各功能界面設(shè)計 GUI設(shè)計界面:
4.2 各功能模塊實現(xiàn) 算法設(shè)計:
A.數(shù)字鍵設(shè)計:0—9以及小數(shù)點函數(shù)都一樣,只是參數(shù)不同: global jj textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','1');else
textString =strcat(textString,'1');set(handles.text1,'String',textString)end jj=0;B.四則運算函數(shù):
textString = get(handles.text1,'String');textString =strcat(textString,'+');set(handles.text1,'String',textString)C.科學(xué)計算函數(shù):
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String','0.');else
a = strread(textString, '%f');a=sin(a);set(handles.text1,'String',a)end 或
textString=handles.text1;textString=sin(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))D.退格鍵:通過取屏幕值,計算出其字符長度,然后取其前N-1項的值來實現(xiàn)退格: global jj textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','0.');else
ss=char(textString);l=length(textString);textString=ss(1:l-1);set(handles.text1,'String',textString)end jj=0;E.清屏鍵函數(shù):
set(handles.text1,'String','0.');F.右鍵函數(shù):
gtext('大家好;我是智能機器人-my name is seven');close(gcf);4.3 各模塊實現(xiàn)結(jié)果 A.數(shù)字鍵:
B.四則運算函數(shù):
C.科學(xué)計算函數(shù): Sin45的計算結(jié)果=
經(jīng)過計算,這些結(jié)果均與實際結(jié)果相吻合,計算器的功能實現(xiàn)的較為完好。5.2問題和解決方法:
a.小數(shù)點可以連續(xù)輸入。解決方法是:用strfind函數(shù)查看文本框里有幾個小數(shù)點,如果已經(jīng)有一個了,再按小數(shù)點就保持不變。b.按過運算符號后一個數(shù)不等于一個數(shù),比如:輸入1,按等號,會出來一個3,經(jīng)過長時間分析得知,這是由于在按運算符號時,系統(tǒng)記錄了文本框里的數(shù)但沒有清空,才會出現(xiàn)這種問題。解決方法是再申請一個不同于加減乘除的另一個符號,并將按過運算符后記錄的數(shù)值置0。
c.按對數(shù)函數(shù)鍵時,負數(shù)也能運算,通過加入if判斷語句來判斷輸入的值是否為負,若為負則輸出error.6、心得體會
通過本次的MATLAB課程設(shè)計,讓我對MATLAB尤其是其GUI設(shè)計的功能有了進一步的了解,認識到了它功能的強大。在MATLAB簡單計算器的設(shè)計中,了解了關(guān)于MATLAB圖形用戶界面的部分控件的使用方法;利用MATLAB的GUI提供的很多實用的控件,方便用于設(shè)計屬于自己的圖形界面。
7、附錄(源代碼)
function varargout = jisuanqi(varargin)% JISUANQI M-file for jisuanqi.fig
% JISUANQI, by itself, creates a new JISUANQI or raises the existing % singleton*.%
% H = JISUANQI returns the handle to a new JISUANQI or the handle to % the existing singleton*.%
% JISUANQI('CALLBACK',hObject,eventData,handles,...)calls the local % function named CALLBACK in JISUANQI.M with the given input arguments.%
% JISUANQI('Property','Value',...)creates a new JISUANQI or raises the % existing singleton*.Starting from the left, property value pairs are % applied to the GUI before jisuanqi_OpeningFunction gets called.An % unrecognized property name or invalid value makes property application % stop.All inputs are passed to jisuanqi_OpeningFcn via varargin.%
% *See GUI Options on GUIDE's Tools menu.Choose “GUI allows only one % instance to run(singleton)”.%
% See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help jisuanqi % Last Modified by GUIDE v2.5 04-Dec-2012 17:06:43 % Begin initialization codeDO NOT EDIT
%---Executes just before jisuanqi is made visible.function jisuanqi_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)% Get default command line output from handles structure varargout{1} = handles.output;
function edit1_Callback(hObject, eventdata, handles)% hObject handle to edit1(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles emptyto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','1');else
textString =strcat(textString,'1');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');
if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','3');else
textString =strcat(textString,'3');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton13.function pushbutton13_Callback(hObject, eventdata, handles)% hObject handle to pushbutton13(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','-');else
textString = get(handles.text1,'String');textString =strcat(textString,'-');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton21.function pushbutton21_Callback(hObject, eventdata, handles)% hObject handle to pushbutton21(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;
textString=sin(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%a = strread(textString, '%f')%textString=get(handles.text1,'String')%textString=strcat(textString,'sin')%set(handles.text1,'String',textString)%---Executes on button press in pushbutton23.function pushbutton23_Callback(hObject, eventdata, handles)% hObject handle to pushbutton23(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','4');else
textString =strcat(textString,'4');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','6');else
textString =strcat(textString,'6');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton15.function pushbutton15_Callback(hObject, eventdata, handles)% hObject handle to pushbutton15(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','/');else
textString = get(handles.text1,'String');textString =strcat(textString,'/');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton24.function pushbutton24_Callback(hObject, eventdata, handles)% hObject handle to pushbutton24(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;
textString=cos(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%---Executes on button press in pushbutton26.function pushbutton26_Callback(hObject, eventdata, handles)% hObject handle to pushbutton26(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','7');else
textString =strcat(textString,'7');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');
if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','9');else
textString =strcat(textString,'9');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton17.function pushbutton17_Callback(hObject, eventdata, handles)% hObject handle to pushbutton17(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String',')');else
textString =strcat(textString,')');set(handles.text1,'String',textString)end
%---Executes on button press in pushbutton27.function pushbutton27_Callback(hObject, eventdata, handles)% hObject handle to pushbutton27(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;
textString=tan(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%---Executes on button press in pushbutton29.function pushbutton29_Callback(hObject, eventdata, handles)% hObject handle to pushbutton29(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','0.');else
textString =strcat(textString,'0');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton11.function pushbutton11_Callback(hObject, eventdata, handles)% hObject handle to pushbutton11(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)set(handles.text1,'String','0.');
%---Executes on button press in pushbutton19.function pushbutton19_Callback(hObject, eventdata, handles)% hObject handle to pushbutton19(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString=get(handles.text1,'String')s=eval(textString)
set(handles.text1,'String',s)
%---Executes on button press in pushbutton30.function pushbutton30_Callback(hObject, eventdata, handles)% hObject handle to pushbutton30(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;
textString=cot(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%---Executes on button press in pushbutton32.function pushbutton32_Callback(hObject, eventdata, handles)% hObject handle to pushbutton32(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%open('1.bmp')
gtext('大家好;我是智能機器人-my name is seven');
%------function J_Callback(hObject, eventdata, handles)% hObject handle to J(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)close(gcf);
8、參考書目:
[1]《MATLAB語言及其在電子信息工程中的應(yīng)用》 王洪元主編 清華大學(xué)出版社
[2] 《MATLAB中GUI的應(yīng)用》 王洪元主編 清華大學(xué)出版社
第四篇:牛頭刨床課程設(shè)計matlab程序
lo2o3=0.65;l2=0.09250;l4=1.1245;l5=0.281125;lo3d=1.11878;w2=8*pi/3;m4=16;m5=4;m6=68;g=9.8;j4=1.6;j5=0.03;k2=-38.18;
for i=1:13;k2=k2+30;if k2>90&k2<270 k4=pi+atan((lo2o3+l2*sin(k2*pi/180))/(l2*cos(k2*pi/180)));else k4=atan((lo2o3+l2*sin(k2*pi/180))/(l2*cos(k2*pi/180)));end
k5=asin((lo3d-l4*sin(k4))/l5);sf= l4*cos(k4)+l5*cos(k5);%得到牛頭刨頭的位移
l3=l2*cos(k2*pi/180)/cos(k4);B1=[cos(k4),-l3*sin(k4),0,0;sin(k4),l3*cos(k4),0,0;0,-l4*sin(k4),-l5*sin(k5),-1;0,l4*cos(k4),l5*cos(k5),0;];M=inv(B1)*(w2*[-l2*sin(k2*pi/180);l2*cos(k2*pi/180);0;0;]);%求得矩陣,其中M=[v3;w4;w5;vf]
B2=[-M(2)*sin(k4),-M(1)*sin(k4)-M(2)*l3*cos(k4),0,0;M(2)*cos(k4),M(1)*cos(k4)-M(2)*l3*cos(k4),0,0;0,-M(2)*l4*cos(k4),-l5*M(3)*cos(k5),0;0,-M(2)*l4*sin(k4),-l5*M(3)*sin(k5),0;];N=inv(B1)*(-B2*M+w2*[-l2*w2*cos(k2*pi/180);-l2*w2*sin(k2*pi/180);0;0;]);%求得加速度矩陣,其中N=[a3;a4;a5;af]
vf=M(4);af=N(4);X(i,:)=[k2,sf,vf,af];%收集Φ2與牛頭刨頭位移,速度,加速度與Φ2的數(shù)據(jù) a4x=-N(2)*l4*sin(k4)/2-M(2)*M(2)*l4*cos(k4)/2;a4y=N(2)*l4*cos(k4)/2-M(2)*M(2)*l4*sin(k4)/2;a5x=2*a4x-N(3)*l5*sin(k5)/2-M(3)*M(3)*l5*cos(k5)/2;a5y=2*a4y+N(3)*l5*cos(k5)/2-M(3)*M(3)*l5*sin(k5)/2;%求出構(gòu)件4,5質(zhì)心的加速度,以便慣性力的計算
p4x=-m4*a4x;p4y=-m4*a4y;M4=-j4*N(2);p5x=-m5*a5x;p5y=-m5*a5y;M5=-j5*N(3);p6=-m6*af;%構(gòu)件4,5,6的慣性力及慣性力矩
if sf>(0.03+0.50237-0.6)&sf<(0.50237-0.03)fc=14000;
else fc=0;end %判斷fc的取值
M1=[1,0,1,0,0;0,1,0,0,0;0,0,-1,0,1;0,-1,0,1,0;0,l5*sin(k5)/2,-l5*cos(k5)/2,l5*sin(k5)/2,-l5*cos(k5)/2;];N1=[m6*g;-fc-p6;m5*g-p5y;-p5x;-M5;];
F1=inv(M1)*N1;%其中F1對應(yīng)的量為:F1=[fn;r56x;r56y;r45x;r45y;]
M2=[1,0,1,0,0;0,1,0,1,0;cos(k4),sin(k4),0,0,0;(l4/2-l3)*sin(k4),-(l4/2-l3)*cos(k4),l4*sin(k4)/2,-l4*cos(k4)/2,0;l2*sin(k2*pi/180),-l2*cos(k2*pi/180),0,0,1;];N2=[F1(4)-p4x;F1(5)-p4y+m4*g;0;F1(5)*l4*cos(k4)/2-F1(4)*l4*sin(k4)/2-M4;0;];
F2=inv(M2)*N2;%其中F2對應(yīng)的量為:F2=[r34x;r34y;r14x;r14y;Mb;]
Y(i,:)=[k2,F2(1), F2(2), F2(3), F2(4), F1(4), F1(5), F1(2), F1(3)];%記錄不同角度時反力r34x,r34y,r14x,r14y,r45x,r45y,r56x,r56y的數(shù)據(jù)
Z(i,:)=[k2,F2(5),p4x,p4y,M4,p5x,p5y,M5,p6];%記錄Φ2與平衡力矩的關(guān)系 end
disp(X);disp(Y);disp(Z);
plot(X(:,1),X(:,2),'-')grid on title('s6--Φ2函數(shù)')xlabel('變量Φ2(°)')ylabel('變量s6(m)')
figure plot(X(:,1),X(:,3),'-')grid on title('v6--Φ2函數(shù)')xlabel('變量Φ2(°)')ylabel('變量v6(m/s)')
figure plot(X(:,1),X(:,4),'-')grid on title('a6--Φ2函數(shù)')xlabel('變量Φ2(°)')ylabel('變量a6(m*m/s)')
figure plot(Z(:,1),Z(:,2),'-')grid on title('Mb--Φ2函數(shù)')xlabel('變量Φ(2°)')ylabel('變量Mp(N*m)')
21.8200
0.4211
-0.6064
-8.0130
51.8200
0.3698
-0.9980
-4.4055
81.8200
0.3010
-1.1660
-0.9019
111.8200
0.2286
-1.1154
2.4802
141.8200
0.1661
-0.8479
5.9804
171.8200
0.1273
-0.3571
9.5994
201.8200
0.1257
0.3339
12.1179
231.8200
0.1703
1.0781
10.6189
261.8200
0.2546
1.5373
2.9031
291.8200
0.3495
1.3924
-7.1580
321.8200
0.4180
0.7490-12.0727
351.8200
0.4411
-0.0000-11.1982
381.8200
0.4211
-0.6064
-8.0130
1.0e+004 *
0.0022
-2.3453
0.2943
0.8812-0.0177
-0.2917
-1.4577-0.0136
-1.4545
0.0052
-2.2130
0.1751
0.7778
-0.1467
-1.4317
0.0132
-1.4300
0.0094
0.0082
-2.1335
0.0379
0.7263
0.0064
-1.4065
0.0295
-1.4061
0.0258
0.0112
-2.1010
-0.0982
0.7208
0.1370
-1.3821
0.0239
-1.3831
0.0202
0.0142
-2.1175
-0.2177
0.7654
0.2345
-1.3569
0.0011
-1.3593
-0.0028
0.0172
-2.1882
-0.3021
0.8650
0.2979
-1.3309
-0.0209
-1.3347
-0.0250
0.0202-0.0257
0.0232-0.0008
0.0262 0.0247
0.0292 0.0169
0.0322-0.0160
0.0352-0.0322
0.0382-0.0177
1.0e+003 *
0.0218 0.5449
0.0518 0.2996
0.0818 0.0613
0.1118-0.1687
0.1418-0.4067
0.1718-0.6528
0.2018-0.8240
0.2318-0.7221
0.2618-2.3215-2.5278-2.7700-2.8882-2.7690-2.5408-2.3453
1.0591 1.7092
1.9584 1.8379
1.3691 0.5646-0.5201-1.6948-2.5276-0.3238-0.2504-0.0653
0.1760
0.3396 0.3653 0.2943 0.0640 0.0351 0.0074-0.0198-0.0481-0.0767-0.0968-0.0853-0.0229
1.0184
1.2128
1.3932
1.4309
1.2724 1.0512 0.8812-0.0053
0.0044
0.0095
0.0080
0.0003-0.0097-0.0127-0.0001
0.0163
0.3193 0.2692 0.1076-0.1408-0.3350-0.3763-0.2917-0.0114-0.0062-0.0013 0.0035 0.0085 0.0137 0.0174 0.0151 0.0040-1.3128-1.3235-1.3791-1.4515-1.4869-1.4806-1.4577 0.0320 0.0176 0.0037-0.0099-0.0240-0.0384-0.0484-0.0426-0.0115-0.0215
0.0031
0.0282
0.0205
-0.0119
-0.0279
-0.0136-0.0013
0.0011
0.0024
0.0020
0.0001-0.0024-0.0032-0.0000
0.0041-1.3176
-1.3278
-1.3803
-1.4487
-1.4821
-1.4761
-1.4545
0.0001
-0.0001
-0.0001
-0.0001
-0.0000
0.0001
0.0002
0.0000
-0.0002
-0.1974
0.2918
-2.4196
0.0572
0.0104
-0.0100
0.0286
0.4867
0.3218
-1.3363
0.0964
-0.0077
-0.0172
0.0482
0.8209
0.3518
0.0001
0.0898
-0.0129
-0.0161
0.0449
0.7615 0.3818
1.0591
0.0640
-0.0053
-0.0114
0.0320
0.5449
0.0026
-0.0001
-0.0019
0.0001
-0.0032
0.0002
-0.0013
0.0001
第五篇:《MATLAB語言及其應(yīng)用》教案
MATLAB語言及其應(yīng)用
教
案
任課教師:羅靖宇
任課班級:09通信(1)(2)
教材:MATLAB程序設(shè)計與應(yīng)用(第二版)
作 者:劉衛(wèi)國主編 出版社:高等教育出版社
內(nèi)容:
書籍簡介:本書以MATLAB 7.0版為藍本介紹MATLAB功能與應(yīng)用強調(diào)理論和實踐相結(jié)合貼近讀者需要注重講清有關(guān)數(shù)學(xué)方法和算法原理前提下介紹MATLAB功能;注重和有關(guān)學(xué)科領(lǐng)域結(jié)合,突出應(yīng)用書中有許多應(yīng)用實例些實例既是對MATLAB重點和難點詮釋又可以更好地幫助讀者應(yīng)用MATLAB來解決實際問題具有很強代表性。
全書分為基礎(chǔ)篇應(yīng)用篇和實驗篇基礎(chǔ)篇包括MATLAB系統(tǒng)環(huán)境MATLAB數(shù)據(jù)及其運算MATLAB矩陣分析與處理 MATLAB程序設(shè)計MATLAB圖MATLAB數(shù)值計算MATIAB符號計算應(yīng)用篇包括MATLAB圖形用戶界面設(shè)計MATLAB Notebook使用MATLAB Simulink 仿真軟件MATLAB外部程序接口技術(shù)MATLAB應(yīng)用實驗篇和教學(xué)內(nèi)容相配合包括15實驗以幫助讀者更好地上機操作。本書可作為高等學(xué)校理工科各專業(yè)大學(xué)生或研究生學(xué)習(xí)教材也可供廣大科技工作者參考。
第1章 MATLAB系統(tǒng)環(huán)境
1.1 MATLAB概貌
1.1.1 MATLAB 發(fā)展
1.1.2 MATLAB 主要功能
1.1.3 MATLAB功能演示
1.2 MATLAB環(huán)境 準備
1.2.1 MATLAB 安裝
1.2.2 MATLAB 啟動與退出
1.3 MATLAB操作界面
1.3.1 主窗口
1.3.2 命令窗口
1.3.3 工作空間窗口
1.3.4 當(dāng)前目錄窗口和搜索路徑
1.3.5 命令歷史記錄窗口
1.3.6 Stalt菜單
1.4 MATLAB幫助系統(tǒng)
1.4.1 幫助命令
1.4.2 幫助窗口
1.4.3 演示系統(tǒng)
第2章 MATLAB數(shù)據(jù)及其運算
2.1 MATLAB數(shù)據(jù) 特點
2.2 變量及其操作
2.2.1 變量與賦值
2.2.2 變量 管理
2.2.3 數(shù)據(jù) 輸出格式
2.3 MATLAB矩陣 表示
2.3.1 矩陣 建立
2.3.2 冒號表達式
2.3.3 矩陣 拆分
2.4 MATLAB數(shù)據(jù) 運算
2.4.1 算術(shù)運算
2.4.2 關(guān)系運算
2.4.3 邏輯運算
2.5 字符串
2.6 結(jié)構(gòu)數(shù)據(jù)和單元數(shù)據(jù)
2.6.1 結(jié)構(gòu)數(shù)據(jù)
2.6.2 單元數(shù)據(jù)
第3章 MATLAB矩陣分析與處理
3.1 特殊矩陣
3.1.1 通用 特殊矩陣
3.1.2 用 專門學(xué)科 特殊矩陣
3.2 矩陣結(jié)構(gòu)變換
3.2.1 對角陣與三角陣
3.2.2 矩陣 轉(zhuǎn)置與旋轉(zhuǎn)
3.3 矩陣求逆與線性方程組求解
3.3.1 矩陣 逆與偽逆
3.3.2 用矩陣求逆方法求解線性方程組
3.4 矩陣求值
3.4.1 方陣 行列式值
3.4.2 矩陣 秩與跡
3.4.3 向量和矩陣 范數(shù)
3.4.4 矩陣 條件數(shù)
3.5 矩陣 特征值與特征向量
3.6 矩陣 超越函數(shù) 第4章 MATLAB程序設(shè)計
4.1 M文件
4.1.1 M文件 分類
4.1.2 M文件 建立與打開
4.2 程序控制結(jié)構(gòu)
順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu) 4.3 函數(shù)文件 4.4 程序調(diào)試
第5章 MATLAB繪圖
5.1 二維圖形
I
5.2 三維圖形
5.3 三維圖形的精細處理
5.4 隱函數(shù)繪圖
5.5 底層繪圖操作
5.6 光照與材質(zhì)
5.7 圖像顯示與動畫
第6章 MATLAB數(shù)值計算
6.1 數(shù)據(jù)處理與多項式計算
6.2 數(shù)值微積分
6.3 離散傅里葉變換
6.4 線性方程組求解
6.5 非線性方程與最優(yōu)化問題求解
6.6 常微分方程的數(shù)值求解
6.7 稀疏矩陣
第7章 MATLAB符號計算
7.1 符號計算基礎(chǔ)
7.2 符號函數(shù)及其應(yīng)用
7.3 符號積分
7.4 級數(shù)
7.5 符號方程求解 應(yīng)用篇
第8章 MATLAB圖形用戶界面設(shè)計
8.1 菜單設(shè)計
8.2 對話框設(shè)計
8.3 可視化圖形用戶界面設(shè)計
第9章 MATLABNotebook 使用
9.1 NOTEBook的安裝于啟動
9.2 單元的定義與執(zhí)行
9.3 輸出格式控制
第10章 MATLABSimlllink仿真軟件
10.1 Simlllink操作基礎(chǔ)
10.2 系統(tǒng)仿真模型
10.3 系統(tǒng)的仿真
10.4 使用命令操作對系統(tǒng)進行仿真
10.5 子系統(tǒng)及其封裝技術(shù)
10.6 S函數(shù)的設(shè)計與應(yīng)用
第11章 MATLAB外部程序接口技術(shù)
11.1 MATLAB的數(shù)據(jù)接口
11.2 MATLAB編譯器
11.3 MATLAB計算引擎
11.4 MEX動態(tài)鏈接函數(shù)接口
第12章 MATLAB 應(yīng)用
12.1 MATLAB在電路分析中的應(yīng)用
12.2 MATLAB在控制系統(tǒng)分析中的應(yīng)用
12.3 MATLAB在數(shù)學(xué)建模中的應(yīng)用
12.4 MATLAB在力學(xué)及工程結(jié)構(gòu)分析中的應(yīng)用
12.5 MATLAB在優(yōu)化設(shè)計中的應(yīng)用 實驗篇
實驗要求
實驗
MATLAB運算基礎(chǔ)
實驗二 MATLAB矩陣分析與處理
實驗三 選擇結(jié)構(gòu)程序設(shè)計
實驗四 循環(huán)結(jié)構(gòu)程序設(shè)計
實驗五 函數(shù)文件
實驗六 高層繪圖操作
實驗七 低層繪圖操作
實驗八 數(shù)據(jù)處理與多項式計算
實驗九 數(shù)值微積分與方程數(shù)值求解
實驗十 符號計算基礎(chǔ)與符號微積分
實驗十
級數(shù)與方程符號求解
實驗十二 菜單與對話框設(shè)計
實驗十三 Simulink 應(yīng)用
實驗十四 外部程序接口
實驗十五 綜合實驗
II
第1章
MATLAB系統(tǒng)環(huán)境
本章重點:發(fā)展、功能、操作界面、幫助 課時安排:2課時 內(nèi)容安排:
1、概述:MATLAB 發(fā)展、MATLAB 主要功能(1)發(fā)展
MATLAB名字由MATrix和 LABoratory 兩詞的前三個字母組合而成。那是20世紀七十年代后期的事:時任美國新墨西哥大學(xué)計算機科學(xué)系主任的Cleve Moler教授出于減輕學(xué)生編程負擔(dān)的動機,為學(xué)生設(shè)計了一組調(diào)用LINPACK和EISPACK庫程序的“通俗易用”的接口,此即用FORTRAN編寫的萌芽狀態(tài)的MATLAB。經(jīng)幾年的校際流傳,在Little的推動下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市場。從這時起,MATLAB的內(nèi)核采用C語言編寫,而且除原有的數(shù)值計算能力外,還新增了數(shù)據(jù)圖視功能。MATLAB以商品形式出現(xiàn)后,僅短短幾年,就以其良好的開放性和運行的可靠性,使原先控制領(lǐng)域里的封閉式軟件包(如英國的UMIST,瑞典的LUND和SIMNON,德國的KEDDC)紛紛淘汰,而改以MATLAB為平臺加以重建。在時間進入20世紀九十年代的時候,MATLAB已經(jīng)成為國際控制界公認的標(biāo)準計算軟件。到九十年代初期,在國際上30幾個數(shù)學(xué)類科技應(yīng)用軟件中,MATLAB在數(shù)值計算方面獨占鰲頭,而Mathematica和Maple則分居符號計算軟件的前兩名。Mathcad因其提供計算、圖形、文字處理的統(tǒng)一環(huán)境而深受中學(xué)生歡迎。MathWorks公司于1993年推出MATLAB4.0版本,從此告別DOS版。4.x版在繼承和發(fā)展其原有的數(shù)值計算和圖形可視能力的同時,出現(xiàn)了以下幾個重要變化:(1)推出了SIMULINK。這是一個交互式操作的動態(tài)系統(tǒng)建模、仿真、分析集成環(huán)境。它的出現(xiàn)使人們有可能考慮許多以前不得不做簡化假設(shè)的非線性因素、隨機因素,從而大大提高了人們對非線性、隨機動態(tài)系統(tǒng)的認知能力。(2)開發(fā)了與外部進行直接數(shù)據(jù)交換的組件,打通了MATLAB進行實時數(shù)據(jù)分析、處理和硬件開發(fā)的道路。(3)推出了符號計算工具包。1993年MathWorks公司從加拿大滑鐵盧大學(xué)購得Maple的使用權(quán),以Maple為“引擎”開發(fā)了Symbolic Math Toolbox 1.0。MathWorks公司此舉加快結(jié)束了國際上數(shù)值計算、符號計算孰優(yōu)孰劣的長期爭論,促成了兩種計算的互補發(fā)展新時代。(4)構(gòu)作了Notebook。MathWorks公司瞄準應(yīng)用范圍最廣的Word,運用DDE和OLE,實現(xiàn)了MATLAB與Word的無縫連接,從而為專業(yè)科技工作者創(chuàng)造了融科學(xué)計算、圖形可視、文字處理于一體的高水準環(huán)境。1997年仲春,MATLAB5.0版問世,緊接著是5.1、5.2,以及和1999年春的5.3版。與 4.x相比,現(xiàn)今的MATLAB擁有更豐富的數(shù)據(jù)類型和結(jié)構(gòu)、更友善的面向?qū)ο?、更加快速精良的圖形可視、更廣博的數(shù)學(xué)和數(shù)據(jù)分析資源、更多的應(yīng)用開發(fā)工具。(關(guān)于MATLAB5.x的特點下節(jié)將作更詳細的介紹。)誠然,到1999年底,Mathematica也已經(jīng)升到4.0版,它特別加強了以前欠缺的大規(guī)模數(shù)據(jù)處理能力。Mathcad 也趕在2000年到來之前推出了Mathcad 2000,它購買了Maple內(nèi)核和庫的部分使用權(quán),打通了與MATLAB的接口,從而把其數(shù)學(xué)計算能力提高到專業(yè)層次。但是,就影響而言,至今仍然沒有一個別的計算軟件可與MATLAB匹敵。在歐美大學(xué)里,諸如應(yīng)用代數(shù)、數(shù)理統(tǒng)計、自動控制、數(shù)字信號處理、模擬與數(shù)字通信、時間序列分析、動態(tài)系統(tǒng)仿真等課程的教科書都把MATLAB作為內(nèi)容。這幾乎成了九十年代教科書與舊版書籍的區(qū)別性標(biāo)志。在那里,MATLAB是攻讀學(xué)位的大學(xué)生、碩士生、博士生必須掌握的基本工具。在國際學(xué)術(shù)界,MATLAB已經(jīng)被確認為準確、可靠的科學(xué)計算標(biāo)準軟件。在許多國際一流學(xué)術(shù)刊物上,(尤其是信息科學(xué)刊物),都可以看到MATLAB的應(yīng)用。
在設(shè)計研究單位和工業(yè)部門,MATLAB被認作進行高效研究、開發(fā)的首選軟件工具。如美國National Instruments公司信號測量、分析軟件LabVIEW,Cadence公司信號和通信分析設(shè)計軟件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB為主要支撐。又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各種硬卡、儀器等都接受MATLAB的支持。(2)主要功能:計算、圖形、程序、工具
2、MATLAB環(huán)境:準備、MATLAB 安裝、MATLAB 啟動與退出 虛擬光驅(qū)
3種啟動方式:菜單方式、到安裝路勁下雙擊MATLAB.exe運行方式、桌面快捷方式、3種退出方式:菜單、關(guān)閉窗口、命令quit或exit
3、MATLAB操作界面:主窗口、命令窗口、工作空間窗口、當(dāng)前目錄窗口和搜索路徑、命令歷史記錄窗口、Start菜單
4、MATLAB幫助系統(tǒng):幫助命令help、lookfor命令、幫助窗口、演示系統(tǒng)
5、MATLAB功能演示
例1-1 繪制正弦曲線和余弦曲線。x=[0:0.5:360]*pi/180;plot(x,sin(x),x,cos(x));例1-2 求方程 3x4+7x3 +9x2-23=0的全部根。
p=[3,7,9,0,-23];
%建立多項式系數(shù)向量 x=roots(p)
%求根 例1-3 求積分
例1-4 1?[xln(1?x)]dx0
quad('x.*log(1+x)',0,1)求解線性方程組。
?2x1?3x2?x3?4??8x1?3x2?2x3?2即:aX?b ?45x?x?9x?1723?1a=[2,-3,1;8,3,2;45,1,-9];b=[4;2;17];x=inv(a)*b 第2章 MATLAB數(shù)據(jù)及其運算
本章重點:變量、格式、矩陣、運算、字符串 課時安排:4課時 內(nèi)容安排:
1、MATLAB數(shù)據(jù)的特點
(1)矩陣是MATLAB最基本、最重要的數(shù)據(jù)對象。
例如: ??1357?
??2345?(2)向量可以看成是僅有一行或一列的矩陣。
例如:[1 2 3],[28 3 9](3)單個數(shù)據(jù)(標(biāo)量)可以看成是矩陣的特例。單個數(shù)據(jù)看著也看著矩陣。例如:10=[10](4)數(shù)據(jù)類型
MATLAB定義了15種數(shù)據(jù)類型:
Char,float,double,int8,int16,int32,int64,uint8,uint16,uint32,uint64,cell,structure,java類,函數(shù)句柄,用戶定義類型
一般情況下,矩陣的每個元素必須具有相同的數(shù)據(jù)類型,在實際應(yīng)用中,有時需要將不同類型的數(shù)據(jù)構(gòu)成矩陣的元素,也就是結(jié)構(gòu)體(Structure)和元胞(Cell)數(shù)據(jù)類型。
?'LIYANG'22'M'??'LIYANG'22'M'??'WANG'31'W'?,?'WANG'31'W'?
????????'TANG'18'M'???'TANG18'M'?
2、變量及其操作 2.1變量命名:
以字母開頭(不是數(shù)字、漢字開頭)后接字母、數(shù)字、下劃線的最多63個字符,區(qū)分大小寫。
2.2 變量賦值操作(1)變量=表達式 例如:a=123;b=?ok?
(2)表達式;%把表達式值賦值給預(yù)定義變量ans 例如:123456 7?sin(30?)例如:將寫成MATLAB表達式
log(5)e0.3?ln(5?cos(3))將寫成MATLAB表達式 312tg(20)(3)預(yù)定義變量:ans,eps,pi,i,j,inf,Inf,NaN,nan,nargin,nargout,realmax,realmin,lasterr,lastwarn
例如:2+6i,3+pi(4)變量管理:內(nèi)存變量的顯示與刪除,who,whos,clear.(5)工作空間瀏覽器
(6)變量編輯器:(7)內(nèi)存變量文件:
save 文件名
[變量名表] [-append][-ascii]
load 文件名
[變量名表] [-ascii] 2.3 數(shù)據(jù)輸出格式:
采用十進制數(shù)表示一個常數(shù),可用日常記數(shù)法和科學(xué)記數(shù)法,format format short format long format short e format long e format rat format hex format compact format loose
3、MATLAB矩陣表示
矩陣:n×m的數(shù)據(jù)存儲空間
向量:單行或單列的矩陣 標(biāo)量:1×1的矩陣
數(shù)組:矩陣是數(shù)組的特例,矩陣是二維數(shù)組,向量是一維數(shù)組。
空矩陣:[]表示無任何元素 3.1矩陣建立 1.直接輸入法
矩陣元素應(yīng)用方括號([])括住
每行內(nèi)的元素間用逗號(,)或空格隔開 行與行之間用分號(;)或回車鍵隔開; 元素可以是數(shù)值或表達式。例如:a=[2,3;5,6;8,9] cB=[4,2+3i;5i,6i] xp=[2 3;4 5] 復(fù)數(shù)矩陣
2.利用M文件建立矩陣
(1)啟動有關(guān)編輯程序或MATLAB文本編輯器,并輸入待建矩陣.(2)把輸入的內(nèi)容以純文本方式存盤(設(shè)文件名為mymatrix.m)。
(3)load 文件名,就會自動建立一個名為MYMAT的矩陣,可供以后使用。3.建立大矩陣
大矩陣可由方括號中的小矩陣建立起來。例如
A=[1 2 3;4 5 6;7 8 9];
C=[A,eye(size(A));ones(size(A)),A]
4.冒號表達式:
(1)使用冒號表達式生成向量 冒號表達式的一般格式:
e1:e2:e3 其中e1為初始值,e2為步長,e3為終止值。冒號表達式可產(chǎn)生一個由e1開始到e3 4 結(jié)束,以步長e2自增的行向量。
在冒號表達式中如果省略e2不寫,則步長為1。當(dāng)e2省略或e2>0,e1>e3;e2<0, e1 linspace(a,b,n)%生成線性等分向量 logspace(a,b,n)%生成對數(shù)等分向量 說明: a、b、n三個參數(shù)分別表示開始值、結(jié)束值和元素個數(shù); linspace函數(shù)生成從a到b之間線性分布的n個元素的行向量,n如果省略則默認值為100; linspace(a,b,n)與a:(b-a)/(n-1):b等價。 logspace函數(shù)生成從10a到10b之間按對數(shù)等分的n個元素的行向量,n如果省略則默認值為50。 3.2矩陣的拆分: 1.矩陣元素訪問 MATLAB允許用戶對一個矩陣的單個元素進行賦值和操作。而不影響其它元素的值。例如 A=ones(4);A(3,2)=200 只改變該元素的值,而不影響其他元素的值。如果給出的行下標(biāo)或列下標(biāo)大于原來矩陣的行數(shù)和列數(shù),則MATLAB將自動擴展原來的矩陣,并將擴展后未賦值得矩陣元素置為0 A(4,6)=10 也可以采用矩陣元素的序號來引用矩陣元素。矩陣元素按列編號,先第一列,再第二列,依次類推。A(6)顯然,下標(biāo)(subscrip)與序號(index)是一一對應(yīng)的。以m×n矩陣A為例,矩陣元素A(i,j)的序號為 (j-1)*m+i。其相互轉(zhuǎn)換關(guān)系也可利用sub2ind和ind2sub函數(shù)求得 sub2ind(size(A),2,3)[c,d]=ind2sub(size(A),6)2.利用冒號獲得子矩陣 ①A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。 ②A(i:i+m,:)表示取A矩陣第i~i+m行的全部元素;A(:,k:k+m)表示取A矩陣第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第i~i+m行內(nèi),并在第k~k+m列中的所有元素。 A=[1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35];A(2:3,4:5)A(2:3,1:2:5)此外,還可利用一般向量和end運算符等來表示矩陣下標(biāo),從而獲得子矩陣。end表示某一維的末尾元素下標(biāo)。 A=[1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35];A(end,:)%取A最后一行元素 A([1,4],3:end)%取A第1、4行中第3列到最后一列元素 3.利用空矩陣刪除矩陣元素 在MATLAB中,定義[]為空矩陣。給變量X賦空矩陣的語句為X=[]。 注意:X=[]與clear X不同,clear是將X從工作空間中刪除,而空矩陣則存在于工作空間,只是維數(shù)為0。 將某些元素從矩陣中刪除,采用將其置為空矩陣的方法就是一種有效的方法。 A=[1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35];A(:,[2,4])=[]%刪除A的第2列和第4列元素 4 矩陣合并 矩陣的合并就是把兩個以上的矩陣連接起來得到一個新矩陣,“[]”符號可以作為矩陣合并操作符,命令格式如下: c=[a b] %將矩陣a和b水平方向合并為c c=[a;b] %將矩陣a和b垂直方向合并為c 5、MATLAB數(shù)據(jù)運算: 算術(shù)運算:+,-,*,/,^ 點運算:.*,./,.,MATLAB常用函數(shù):sin,asin,cos,acos,tan,atan,sqrt,log,abs,rem,exp,mod,round,gcd,fix 關(guān)系運算(返回真1或假0):<,<=,>,>=,==,!= 邏輯運算((返回真1或假0)):&,|,~ 位運算:bitand,bitor,bitxor,bitshift 關(guān)系與邏輯運算函數(shù):all,any,exit,find,isempty,issparse,xor 6、字符串: 創(chuàng)建:s=?please? 字符串函數(shù):setstr,mat2str,int2str,num2str,str2num,strcat,strcmp 7、結(jié)構(gòu)數(shù)據(jù)和單元數(shù)據(jù): 結(jié)構(gòu)數(shù)據(jù):建立、引用、修改、結(jié)構(gòu)函數(shù) 單元(cell)數(shù)據(jù):建立、引用、函數(shù)第3章 MATLAB矩陣分析與處理 本章重點:特殊矩陣、矩陣變換、矩陣求值 課時安排:4課時 內(nèi)容安排: 1.特殊矩陣的建立 1.1通用特殊矩陣:zeros,ones,eye,rand,randn 幾個產(chǎn)生特殊矩陣的函數(shù): zeros 產(chǎn)生全0矩陣(零矩陣) ones 產(chǎn)生全1矩陣(么矩陣)eye 產(chǎn)生單位矩陣 rand 產(chǎn)生0~1間均勻分布的隨機矩陣 randn 產(chǎn)生0~1間正態(tài)分布的隨機矩陣 這幾個函數(shù)的調(diào)用格式相似,下面以產(chǎn)生零矩陣的zeros函數(shù)為例進行說明。其調(diào)用格式是: zeros(m) 產(chǎn)生m×m零矩陣 zeros(m,n) 產(chǎn)生m×n零矩陣。 zeros(size(A)) 產(chǎn)生與矩陣A同樣大小的零矩陣 相關(guān)的函數(shù)有: size(A) 返回包含2個元素的向量,分別是A的行數(shù)、列數(shù) length(A)給出行數(shù)和列數(shù)中的較大者,即 length(A)=max(size(A)); ndims(A)給出A的維數(shù)。 reshape(A,m,n)它在矩陣總元素保持不變的前提下,將矩陣A重新排成m×n的二維矩陣。 例2.3 分別建立3×3、3×2和與矩陣A同樣大小的零矩陣。(1)建立一個3×3零矩陣:zeros(3)(2)建立一個3×2零矩陣:zeros(3,2)(3)建立與矩陣A同樣大小零矩陣:zeros(size(A))(4)將矩陣xv重新排成2×5、5×2矩陣 xv=[23,34,65,67,54,38,78,76,32,56]; ym=reshape(xv,2,5) newym=reshape(xv,5,2) 1.2專門學(xué)科特殊矩陣:magic,vander,hilb,toeplitz,compan,pascal magic矩陣的每行、每列、及兩條對角線的元素之和都相等。用法:magic(n)vander矩陣的最后一列全為1,倒數(shù)第二列為一個指定的向量,其他各列是其后列與倒數(shù)第二列的點乘。用法:vander(n)Hilb矩陣的每個元素是hij?1,用法:hilb(n) i?j?1toeplitz矩陣除第一行和第一列外,其他每個元素都與其相鄰左上角的元素相同。用法:toeplitz(x,y)或者(x),這里x和y都為向量,生成以x為第一列,y為第一行的toeplitz矩陣 伴隨矩陣compan:設(shè)多項式p(x)?anx?an?1xnn?1???a1x?a0,則多項式的伴隨矩陣 7 ?an?1??an??1?為:A??0????0?0??an?2an01?00?an?3an?????1000?00a0?an??00??00? ?0??00?10??a1an? Pascal矩陣就是楊輝三角形矩陣,第1行和第1列都為1,其余元素為其相鄰的右面和上面元素之和。 2、矩陣結(jié)構(gòu)變換: 2.1 矩陣轉(zhuǎn)置:B=A? 2.2 方陣行列式 det(x):計算方陣行列式 2.3 矩陣秩 rank(x):求矩陣的秩 2.4 矩陣的逆矩陣 inv(x)求矩陣的逆矩陣 2.5 矩陣的特征值與特征向量 [v,d]=eig(x):求矩陣的特征向量v和特征值d 2.6 產(chǎn)生對角陣 diag(x):產(chǎn)生矩陣x的對角陣 2.7 矩陣的正交陣表示 [q,r]=qr(x)2.8 產(chǎn)生上三角矩陣與下三角矩陣 triu(x)和tril(x):分別產(chǎn)生x的上、下三角矩陣,其 余元素補0 3.?dāng)?shù)組翻轉(zhuǎn) 常用數(shù)組翻轉(zhuǎn)函數(shù) :flipud(x)、fliplr(x)、flipdim(x,dim)、rot90(x,k) 4、矩陣求逆與線性方程組求解: (1)矩陣逆inv(A):用于矩陣A的秩為滿秩的方陣A。 偽逆pinv(A):對于不為滿秩的矩陣A,不存在逆矩陣,但可以一個與A的轉(zhuǎn)置矩陣A?同型的矩陣B,使得: A.B.A=A和B.A.B=B 此時稱矩陣B為矩陣A的偽逆,也稱廣義逆矩陣:B=pinv(A)(2)用矩陣求逆方法求解線性方程組: 5、跡:trace(A)矩陣對角線元素之和,也等于矩陣的特征值之和。 6、矩陣范數(shù):norm 用以度量矩陣或向量在某種意義下的長度。設(shè)向量V?(v1,v2,?,vn),則范數(shù):(1)1-范數(shù):||V||1??n|vi| i? 1norm(V,1)(2)2-范數(shù):||V||2??nv2i i?1norm(V,2)或norm(V)(3)∞-范數(shù):||V||??max1?i?n{|vi|} norm(V,inf) 7、矩陣條件數(shù):cond(A) 8、矩陣超越函數(shù) Sqrtm,logm,expm,funm 第4章 MATLAB程序設(shè)計 本章重點:M文件、選擇程序設(shè)計、循環(huán)程序設(shè)計、M函數(shù)設(shè)計 課時安排:4課時 內(nèi)容安排: 4.1 M文件 1. M文件分類 M程序文件(命令文件):無輸入?yún)?shù)、無返回參數(shù) M函數(shù)文件:有輸入?yún)?shù),有返回值 2. M文件 建立與打開(1)在matlab編輯器中(2)在其他編輯器:記事本 3.M文件的運行 4.注解:% 4.2 程序控制結(jié)構(gòu) 1.順序結(jié)構(gòu) (1)數(shù)據(jù)輸入: A=input(?提示信息?,選項)(2)輸入輸出: disp(輸出項)(3)程序暫停: pause(延遲秒數(shù))(4)程序強行中止:Ctrl+C鍵 例題:輸入系數(shù),求并顯示一元二次方程ax2?bx?c?0的根 2.選擇程序設(shè)計(1)if語言 if語句與end組成一個復(fù)合命令 條件滿足則執(zhí)行語句,格式: if 條件 語句組 end 例如:if(fix(x)==x) disp(x); end(2)雙分支語句if else if 條件 語句組1 else 語句組2 end 例如:輸入x計算函數(shù)y值: y???cos(x?1)/(x?10),x?10xx?lnx,x?10 ? (3)多分支if語句 格式: if 條件1 語句組1 elseif 條件2 語句組2 elseif 條件m 語句組m else 語句組n end 例如:從鍵盤輸入,判斷輸入的是否為大寫字母、小寫字母、數(shù)字還是其他字符。(4)switch語句 根據(jù)不同的取值,分別執(zhí)行不同的語句。格式: switch 表達式 case 表達式1 語句組1 case 表達式2 語句組2 … case 表達式m 語句組m otherwise case 表達式n 語句組n end 當(dāng)表達式的值等于表達式1時,則執(zhí)行語句組1;當(dāng)表達式的值等于表達式2時,則執(zhí)行語句組2;…,當(dāng)表達式的值等于表達式m時,則執(zhí)行語句組m;當(dāng)表達式的值不等于case所列的所有表達式時,則執(zhí)行語句組n。 例如:輸入百分數(shù),根據(jù)成績判斷優(yōu)、良、中、及格、不及格等次 (6)try語句 用于判斷執(zhí)行語句是否存在邏輯錯誤(非語法錯誤,如除法的除數(shù)為零),格式: try 語句組1 catch 語句組2 end 先試探執(zhí)行語句1,若存在錯誤,則執(zhí)行語句2;若不存在錯誤則只執(zhí)行語句1而不執(zhí)行語句2.錯誤信息賦給保留的lasterr變量 循環(huán)程序設(shè)計(1)for語句 格式1: for 循環(huán)變量=表達式1:步長:表達式3 循環(huán)體語句 end 2例題:根據(jù)?6?1?122?132???1n2,求?的值,n分別取100,1000,10000.格式2: for 循環(huán)變量=矩陣 循環(huán)體語句 end 將矩陣的每列賦給循環(huán)變量。(3)while語句 格式: while 條件 循環(huán)體 end 例題: (4)break和continue語句 例題 (5)循環(huán)嵌套 例題 4.3 M函數(shù) 1.M函數(shù)格式 function 輸出參數(shù)=函數(shù)名(輸入?yún)?shù)1,輸入?yún)?shù)2,…)注釋部分 函數(shù)體語句 例題 2.return語句 3.函數(shù)調(diào)用 一般函數(shù)調(diào)用 遞歸函數(shù)調(diào)用 4、函數(shù)參數(shù)的可調(diào)性 5、全局變量 global 變量名 4.4 程序調(diào)試 第5章 MATLAB繪圖 本章重點:掌握繪制二維和三維圖形的常用函數(shù),掌握繪制圖形的輔助操作 課時安排:4課時 內(nèi)容安排: 5.1 二維繪圖 1.繪制單根二維曲線 plot函數(shù)的基本調(diào)用格式為:plot(x,y) 其中x和y為長度相同的向量,分別用于存儲x坐標(biāo)和y坐標(biāo)數(shù)據(jù)。2.繪制多根二維曲線 plot函數(shù)的輸入?yún)?shù)是矩陣形式 含多個輸入?yún)?shù)的plot函數(shù),調(diào)用格式為:plot(x1,y1,x2,y2,…,xn,yn)具有兩個縱坐標(biāo)標(biāo)度的圖形,調(diào)用格式為: plotyy(x1,y1,x2,y2)圖形保持:hold on/off 3.設(shè)置曲線樣式 要設(shè)置曲線樣式可以在plot函數(shù)中加繪圖選項,其調(diào)用格式為: plot(x1,y1,選項1,x2,y2,選項2,…,xn,yn,選項n)4.圖形標(biāo)注與坐標(biāo)控制。 有關(guān)圖形標(biāo)注函數(shù)的調(diào)用格式為: title(圖形名稱)xlabel(x軸說明)ylabel(y軸說明)text(x,y,圖形說明)legend(圖例1,圖例2,…) axis函數(shù)坐標(biāo)標(biāo)注函數(shù)調(diào)用格式為: axis([xmin xmax ymin ymax zmin zmax])axis函數(shù)功能豐富,常用的格式還有: axis equal:縱、橫坐標(biāo)軸采用等長刻度。 axis square:產(chǎn)生正方形坐標(biāo)系(缺省為矩形)。axis auto:使用缺省設(shè)置。axis off:取消坐標(biāo)軸。axis on:顯示坐標(biāo)軸。5.其它二維圖形 polar函數(shù)用來繪制極坐標(biāo)圖,其調(diào)用格式為: polar(theta,rho,選項)二維統(tǒng)計分析圖形很多,常見的有條形圖、階梯圖、桿圖和填充圖等,所采用的函數(shù)分別是: bar(x,y,選項)stairs(x,y,選項)stem(x,y,選項)fill(x1,y1,選項1,x2,y2,選項2,…)5.2 三維繪圖 1.三維曲線 調(diào)用格式為: plot3(x1,y1,z1,選項1,x2,y2,z2,選項2,…,xn,yn,zn,選項n)2.三維曲面 surf函數(shù)和mesh函數(shù)的調(diào)用格式為: mesh(x,y,z,c)surf(x,y,z,c)3.其它三維圖形 [x,y,z]=sphere(n) %球體 [x,y,z]= cylinder(R,n)%圓柱體 bar3函數(shù)繪制三維條形圖 stem3函數(shù)繪制離散序列數(shù)據(jù)的三維桿圖 pie3函數(shù)繪制三維餅圖 5.3 三維繪圖的精細處理 1.視點處理 函數(shù)view,其調(diào)用格式為: view(az,el)2.色彩處理 向量元素在[0,1]范圍取值,3個元素分別表示紅、綠、藍3種顏色的相對亮度,稱為RGB三元組。色圖是m×3 的數(shù)值矩陣,它的每一行是RGB三元組。三維表面圖形的著色,surf函數(shù)用缺省的著色方式對網(wǎng)格片著色。除此之外,還可以用shading命令來改變著色方式。3.圖形裁剪處理 例5-25 繪制三維曲面圖,并進行插值著色處理,裁掉圖中x和y都小于0部分。程序如下: [x,y]=meshgrid(-5:0.1:5);z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);surf(x,y,z);shading interp;pause %程序暫停 i=find(x<=0&y<=0);z1=z;z1(i)=NaN;surf(x,y,z1);shading interp;為了展示裁剪效果,第一個曲面繪制完成后暫停,然后顯示裁剪后的曲面。5.4 隱函數(shù)繪圖 ezplot函數(shù)繪制隱函數(shù)圖形 5.5 低層繪圖 5.6 圖像和動畫 第6章 MATLAB數(shù)值計算 本章重點: 課時安排:4課時 內(nèi)容安排: 第7章 MATLAB符號計算 本章重點: 課時安排:2課時 內(nèi)容安排: 第8章MATLAB圖形用戶界面本章重點: 課時安排:2課時 內(nèi)容安排: 第10章Simulink 本章重點: 課時安排:6課時 內(nèi)容安排: