Matlab與Simulink仿真學(xué)習(xí)心得_第1頁
Matlab與Simulink仿真學(xué)習(xí)心得_第2頁
Matlab與Simulink仿真學(xué)習(xí)心得_第3頁
Matlab與Simulink仿真學(xué)習(xí)心得_第4頁
Matlab與Simulink仿真學(xué)習(xí)心得_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Matlab與Simulink仿真學(xué)習(xí)心得班級:07610學(xué)號:072016姓名:呂天雄一Matlab學(xué)習(xí)心得體會與編程實(shí)踐<1>學(xué)習(xí)Matlab的心得體會真正開始接觸Matlab是大二上就開始了,到現(xiàn)在已經(jīng)一年多了,在此之間,Matlab的確為我提供了很多便利。Matlab的確不愧成為是草稿紙上的語言。我們不必去為很簡單的顯示效果圖形去找一些什么其他軟件或者研究比較復(fù)雜的計(jì)算機(jī)圖形學(xué),一個plot或者別的函數(shù)往往就可以得到很滿意的效果。其實(shí)最初開始學(xué)習(xí)matlab的時候感覺這個東西和C沒什么兩樣,但是后來具體到一些東西,比如信號處理和數(shù)學(xué)建模上以后才感覺到使用matlab編寫程序去驗(yàn)證結(jié)果比C要節(jié)省很多時間,而且matlab寫東西基本都是按照自己的思路平鋪直敘很少去考慮什么函數(shù)的嵌套調(diào)用或者指針等等很頭疼的東西。關(guān)于matlab的學(xué)習(xí),我感覺其實(shí)百度和matlab自帶的help基本能夠解決絕大數(shù)問題,而且一些比較好的論壇比如都會為你產(chǎn)生很大的幫助,關(guān)鍵是在于多動手實(shí)踐,多思考。但是matlab畢竟只是一個工具,原理和一些基本的編程素質(zhì)還是必須有的,否則matlab最多也只能是驗(yàn)證一些別人的東西而已,根本幫不上什么忙的。<2>遇到的一些問題的思考方式與解決辦法最開始用matlab的時候是在大物實(shí)驗(yàn),實(shí)驗(yàn)要求去根據(jù)測量得到的數(shù)據(jù)作出圖。但是手動用鉛筆去畫確實(shí)很麻煩,所以用matlab確實(shí)可以省去很大的麻煩。但是第一次遇到問的時候是有關(guān)極化坐標(biāo)下的曲線擬合。首先是一個物理實(shí)驗(yàn)的問題;在做一個關(guān)于光的偏振的實(shí)驗(yàn)的時候,最后的結(jié)果要在一個極化坐標(biāo)下顯示出來;因?yàn)閿?shù)據(jù)是離散的,所以顯示出來的圖像是一個折來折去的一個東東;然后很自然的想法是對這個曲線進(jìn)行插值處理。但是極化坐標(biāo)下MATLAB并未提供插值處理的函數(shù),interpl這個函數(shù)只能在笛卡爾坐標(biāo)系,也就是直角坐標(biāo)系下使用。然后就想到把極坐標(biāo)的數(shù)據(jù)轉(zhuǎn)換的直角坐標(biāo)系下,pol2cart可以實(shí)現(xiàn)這個想法,但是隨后而來,也就是最后導(dǎo)致整個問題失敗的關(guān)鍵也在這里。pol2cart以后產(chǎn)生的一串?dāng)?shù)據(jù)中出現(xiàn)了重復(fù)的數(shù)據(jù),那么interpl這個東西也就無能為力了,因?yàn)閕nterpl不能處理一串?dāng)?shù)據(jù)中有重復(fù)出現(xiàn)的情況。最后的處理辦法是把這些數(shù)據(jù)c接下來這個問題就有點(diǎn)超過我的范圍了,可能會有點(diǎn)敘述不清楚。問題可以概要為:人臉網(wǎng)格插值。這是一個用三角形網(wǎng)格表示的一個人臉模型。需要通過插值使其變得光滑,當(dāng)然問題的復(fù)雜之處在于,插值會改變原本的網(wǎng)格結(jié)構(gòu)。對于這個問題許多人都給出了解決的辦法,當(dāng)然是一些關(guān)于人臉識別技術(shù)和運(yùn)動圖像處理的范疇之內(nèi)的。主要有兩種,第一種是face—Is算法。這種算法是基于RBF(徑向插值函數(shù))和loop細(xì)分原則的一種算法,當(dāng)然其精確程度比較差點(diǎn)。但是速度挺好。原理是:基于網(wǎng)格上的點(diǎn),產(chǎn)生出頂點(diǎn)的迭代函數(shù),從而產(chǎn)生出新的定點(diǎn),進(jìn)行細(xì)化。然后進(jìn)行插值。也就是引進(jìn)新的頂點(diǎn)。分為兩個過程內(nèi)部插值和邊緣插值。具體可以去看蘭州大學(xué)信息工程學(xué)院的學(xué)報。第二種也就是基本的老辦法RBF。首先解釋一下什么叫做徑向插值徑向基函數(shù)主要是考慮多維空間的數(shù)據(jù)插值問題,徑向基函數(shù)在三維圖形的變形中常常被采用,用其來變分三維人臉的時候還應(yīng)結(jié)合人臉的固有特征。確定該方法來實(shí)現(xiàn)三維人臉變形是可行的,但要構(gòu)造好的基函數(shù),以及解這些高維方程的解仍是難點(diǎn)。插值方法:假設(shè)大多數(shù)人臉的形狀都可以由一個拓?fù)湓妥兓脕?,那么,通過調(diào)整一個一般模型的構(gòu)造參數(shù)可以建立不同的面部模型。但是,這種參數(shù)模型僅僅局限于那些構(gòu)造參數(shù)已知的情況,并且對特定人臉參數(shù)的調(diào)整非常困難。在離散數(shù)據(jù)的多變量插值問題方面,徑向基函數(shù)(radialbasisfunction,RBF)插值方法是一個行之有效的工具,所以也適用于類似人臉這樣高維曲面的近似或平滑插值?,F(xiàn)有的許多方法使用了基于RBF的插值技術(shù),將一般人臉網(wǎng)格變化到特定人臉的形狀。這種方法的優(yōu)點(diǎn)在于:(1)通過插值可以得到丟失的數(shù)據(jù)點(diǎn),所以源網(wǎng)格和目標(biāo)網(wǎng)格不需要相同數(shù)目的結(jié)點(diǎn);(2)如果選擇了合適的匹配點(diǎn),數(shù)學(xué)上可以保證能夠?qū)⒃淳W(wǎng)格變形到目標(biāo)網(wǎng)格。當(dāng)然我也不是很懂,只是理解了部分。這種方法的關(guān)鍵是找到一個很好的核函數(shù)來計(jì)算出新的頂點(diǎn)。最后問題解決的方式是查著了一些圖書館的學(xué)報。然后而且在網(wǎng)上找到了部分代碼。然后做出來的。這是我校大四一個同學(xué)畢設(shè)中的一個東西。其實(shí)這個事件最好的解決辦法是在3D-MAX中,不過因?yàn)闆]能找到MATLAB與3D-MAX是怎么接口的,所以作罷了。

第三次遇到的問題是我在數(shù)學(xué)建模課上遇到的一個關(guān)于矩陣LU分解的問題:Matlab作出的結(jié)果和手算的結(jié)果竟然不一樣。"I0一"£1]£1一個矩陣A=11經(jīng)過三角分解為L=1£1U=01-丄£因?yàn)?/£為一個極大數(shù)則1—1/£可以看成一1/s;設(shè)£=0.000000000000000000000001%10的負(fù)24次方>>Pornailong>>snssns=0.000000000000000L0000000000000001,QOQOnOOOOOOfiOOO 0從而L*U=12111021,0000e+241則最后一位1沒有了變成了0其中L=121| 1.0000e-241?□■i.aaaae+243Matlab程序?yàn)閑pusino=0.000000000000000000000001;U=[epusino1;0-1/epusino];L=[10;1/epusino1];L*Uans=0.0000000000000001.0000000000000001.0000000000000000而直接用lu函數(shù)對矩陣A分解的結(jié)果為A=[epusino1;11]A=0.00001.00001.00001.0000>>[L,U]=lu(A)L=0.0000 1.00001.00000U=1101我們老師當(dāng)時的解釋是這是由于我們所用matlab是破解版的緣故,破解版的計(jì)算精度沒正版的高所以導(dǎo)致運(yùn)算結(jié)果的錯誤,后來我看了一些LU這個函數(shù)的help文檔psychologicallylowertriangularmatrix"(i.e.aproductoflower triangularandpermutationmatrices)inL翻譯過來是L是一個心理上的下三角矩陣,其實(shí)是下三角矩陣和置換矩陣也就是最后的結(jié)論。P*A=L*U.。由此可見這并不是什么精度的問題導(dǎo)致的結(jié)果只是LU分解的矩陣意義和書本上的不同而已。以下是我自己寫的一些程序的代碼1:網(wǎng)絡(luò)隨機(jī)拓?fù)鋱D目的是要生成一個度數(shù)隨機(jī)、權(quán)值隨機(jī)的拓?fù)鋱D。首先的理解是利用鄰接矩陣,先隨機(jī)生成一個矩陣,該矩陣為一個對稱矩陣。然后畫出這個矩陣就行了。

%產(chǎn)生數(shù)組A用來存放表示兩點(diǎn)之間權(quán)值的矩陣A,也就是臨接矩陣,那么兩點(diǎn)之間權(quán)值不為零元素的個數(shù)即為該點(diǎn)的度數(shù)DEF=5;%設(shè)定一個東東方便改變隨機(jī)點(diǎn)的個數(shù)A=rand(DEF,DEF);%產(chǎn)生DEF*DEF的隨機(jī)矩陣fori=1:DEFA(ij)=0%將對角線上的數(shù)置為0endA=10*A;A=floor(A);%向下去整fori=1:DEFforj=1:iA(M)=A(ij)%將A矩陣變?yōu)橐粋€上三角或者下三角矩陣endendx=100*rand(1,DEF);y=100*rand(1,DEF);%產(chǎn)生10個隨機(jī)的點(diǎn)plot(x,y,'r+');fori=1:DEFa=find(A(i,:)>0)%將A矩陣每行大于0的數(shù)的在該行的地址找出來放在a中forj=1:length(a)c=num2str(A(i,j));%將A中的權(quán)值轉(zhuǎn)化為字符型ifc~='0'%不顯示為0的值因?yàn)锳矩陣為零代表兩點(diǎn)不相連text((x(i)+x(j))/2,(y(i)+y(j))/2,c,'Fontsize',18);%將權(quán)值顯示在兩點(diǎn)連線中間endholdon;line([x(i)x(a(j))],[y(i)y(a(j))]);%連線endendtitled隨機(jī)拓?fù)鋱D');e=num2str(DEF);legend(e);%左上角顯示節(jié)點(diǎn)的個數(shù)form=1:DEFA(m,m)=m;f=num2str(A(m,m));holdon;text((x(m)+x(m))/2,(y(m)+y(m))/2,f,'Fontsize',18);%將權(quán)值顯示在兩點(diǎn)連線中間end接下來是一個在信息安全課上寫的一個關(guān)于256色圖分層的程序,一副圖像有m*n個像素然后每個像素是一個8bit的二進(jìn)制數(shù)據(jù)換算為十進(jìn)制是0-255之間。要做的就是把每bit的信息提取出來。I=imread('bupt副本.bmp');%讀入源圖像I=double(I);%將圖像轉(zhuǎn)換為double類型便于MATLAB中的計(jì)算%確定圖像的長寬M=size(I,1);%長N=size(I,2);%寬l=M*N;%圖像長寬之積forn=1:8;%剔除每層fori=1:Mforj=1:NB=numdec2bin(I(i,j),8);%先將每個像素轉(zhuǎn)換為8位2進(jìn)制序列B(n)=[];%刪除相應(yīng)位置的元素y(i,j)=numbin2dec(B);%將剩下的7個元素轉(zhuǎn)換為10進(jìn)制數(shù)放入y矩陣中endendy=uint8(y);%將10進(jìn)制的矩陣轉(zhuǎn)換為無符號整形subplot(4,2,9-n);%顯示n個圖像,每層是相應(yīng)的剔除該層的結(jié)果imshow(y);%顯示這個圖像title(strcat('去除第',num2str(9-n),'層后的結(jié)果'));%顯示標(biāo)題end附帶的兩個函數(shù):functiony=numdec2bin(x,n);%從函數(shù)將十進(jìn)制數(shù)x轉(zhuǎn)化為n位二進(jìn)制y=zeros(1,n);a=x;

i=n;whilea>0y(i)=mod(a,2);a=floor(a/2);i=i-1;endfunctiony=numbin2dec(x)%將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)a=0;lx=length(x);fori=1:lxa=a+x(i)*2人(lx-i);endy=a;去除第i層后的結(jié)果去除第3層后的結(jié)果的結(jié)果去除第7層后的結(jié)果去除第i層后的結(jié)果去除第3層后的結(jié)果的結(jié)果去除第7層后的結(jié)果Matlab的RGB轉(zhuǎn)換為YCbCr之后轉(zhuǎn)換回來和原圖不符這個是做JPEG圖像壓縮的時候遇到的一個問題,當(dāng)時的代碼是用C寫的但是結(jié)果不對,后來想到用matlab進(jìn)行驗(yàn)證結(jié)果發(fā)現(xiàn)通過公式轉(zhuǎn)換得到的圖是錯的。原理:BMP圖像壓縮為JPEG的第一步是將RGB色彩空間通過這個公式映射到Y(jié)CbCr空間上。Y=0.299R+0.587G+0.114BCb=-0.1687R-0.3313G+0.5B+128Cr=0.5R-0.4187G-0.0813B+128然后再進(jìn)行量化,DCT,編碼等等步驟。JPEG解壓時需要將YCbCr空間的圖像又轉(zhuǎn)化回來到RGB上。R=Y+1.402(Cr-128)G=Y-0.34414(Cb-128)-0.71414(Cr-128)B=Y+1.772(Cb-128)但是通過書上給的公式和網(wǎng)上大部分公式卻發(fā)現(xiàn)根本轉(zhuǎn)化不會來。下面是寫的程序代碼以及測試得到的結(jié)果圖像。clc,clear;Source=imread('hl.jpg');%讀入原始RGB圖像figure(1);subplot(1,2,1);imshow(Source):title('originalimage');%顯示圖像[rcd]=size(Source);%計(jì)算圖像大小% 計(jì)算紅色分量并顯示分解圖 %R(:,:,1)=Source(:,:,1);R(:,:,2)=zeros(r,c);R(:,:,3)=zeros(r,c);R=uint8(R);whos;figure(2);subplot(1,3,1);imshow(R)title('RedComponent');% 計(jì)算綠色分量并顯示分解圖 %G(:,:,2)=Source(:,:,2);G(:,:,1)=zeros(r,c);G(:,:,3)=zeros(r,c);G=uint8(G);figure(2);subplot(1,3,2);imshow(G)title('GreenComponent');% 計(jì)算藍(lán)色分量并顯示分解圖 %B(:,:,3)=Source(:,:,3);B(:,:,1)=zeros(r,c);B(:,:,2)=zeros(r,c);B=uint8(B);figure(2);subplot(1,3,3)imshow(B)title('BlueComponent');% 合成 %Comp(:,:,1)=R(:,:,1);Comp(:,:,2)=G(:,:,2);Comp(:,:,3)=B(:,:,3);figure(1);subplot(1,2,2);imshow(Comp):title('compositionimage');Y=0.229*R+0.587*G+0.114*B;Cb=0.5*B-0.1687*R-0.3313*G+128;Cr=0.5*R-0.4187*G-0.0813*B+128;red=Y+1.402*(Cr-128);green=Y-0.34414*(Cb-128)-0.71414*(Cr-128);blue=Y+1.772*(Cb-128);Comp2(:,:,1)=red(:,:,1);Comp2(:,:,2)=green(:,:,2);Comp2(:,:,3)=blue(:,:,3);figure(3);imshow(Comp2);title('RGB轉(zhuǎn)換為YCrCb后又轉(zhuǎn)換為RGB的圖像');RD=R(:,:,1)-red(:,:,1);GD=G(:,:,2)-green(:,:,2);BD=B(:,:,3)-blue(:,:,3);figure(4);subplot(1,3,1);imshow(RD);title('紅色分量差異');subplot(1,3,2);imshow(GD);title('綠色分量差異');subplot(1,3,3);imshow(BD);title('藍(lán)色分量差異');然而可以通過figure(4)的圖像清楚看到R和G分量轉(zhuǎn)換后恢復(fù)與以前的差別很大。而且看了一下matlab自帶的rgb2ycbcr和ycbcr2rgb并且用了這兩個函數(shù)測試后圖像是一樣的。很是不解實(shí)驗(yàn)得到的圖為:nrininalimacannmnnQ計(jì)icnimacanrininalimacannmnnQ計(jì)icnimaca將源圖像分為RGB三個部分。將源圖像分為RGB三個部分。RedComponentGreenComponentBlueComponent將源圖像的RGB分量轉(zhuǎn)換到Y(jié)CbCr上后又轉(zhuǎn)化為RGB得到的三個分量差異的圖。紅色分量差異綠色分量差異藍(lán)色分量差異紅色分量差異綠色分量差異藍(lán)色分量差異matlab函數(shù)轉(zhuǎn)換的y分量matlab函數(shù)轉(zhuǎn)換的Cb分量natlab函數(shù)轉(zhuǎn)換的Cr分量從最后的結(jié)果可以看出原圖轉(zhuǎn)換到Y(jié)CbCr空間之后又轉(zhuǎn)化回來得到的圖像與原圖不符….RGB轉(zhuǎn)換為RGB轉(zhuǎn)換為YCrCb后又轉(zhuǎn)換為RGB的圖像以上只是我自己用Matlab做過的部分問題,還有一些比如場聲源定位Music算法仿真,DES加密算法。神經(jīng)網(wǎng)絡(luò)濾波器等等,鑒于代碼量太大,就不再敖述。二Simulink學(xué)習(xí)心得與編程實(shí)踐SIMILINK模塊庫按功能進(jìn)行分類,包括以下8類子庫:Continuous(連續(xù)模塊)Discrete(離散模塊)Function&Tables(函數(shù)和平臺模塊)Math(數(shù)學(xué)模塊)Nonlinear(非線性模塊)Signals&Systems(信號和系統(tǒng)模塊)Sinks(接收器模塊)Sources(輸入源模塊)對于simulink來說其實(shí)沒什么好說的,需要什么就把什么拖到Model里面,連線之后設(shè)定參數(shù)。不是很麻煩的。但是重要的是對于系統(tǒng)的設(shè)計(jì)與仿真思想才是最重要的。而且里面的S-Function也是比較好的一個設(shè)計(jì),用S-Function可以自定義一些組件,使自己的仿真看上去更加清晰與精簡。Simulink的工作方式:(1) 模塊內(nèi)的參數(shù)值首先會送到Matlab中進(jìn)行計(jì)算,得到的參數(shù)值會用來當(dāng)做以后需要調(diào)用的參數(shù)。(2) 模型系統(tǒng)中的各個層級將被平展開來,每一個子系統(tǒng)將被相應(yīng)的模塊所代替(3) 模塊按被處理的順序排列,此時代數(shù)回路結(jié)構(gòu)也被檢查出來,此種排列產(chǎn)生一個列表,以確保具有代數(shù)回路的模塊驅(qū)動輸入的模塊被更新后才更新。(4) 檢查塊之間的鏈接,是否每一個塊的輸出端口與它所連接的模塊輸入端口有相同的信號寬度?,F(xiàn)在可以準(zhǔn)備執(zhí)行仿真操作,仿真時使

溫馨提示

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

評論

0/150

提交評論