第一篇:MATLAB上機(jī)實(shí)踐報(bào)告
clear all;
load('Hsoa2ib2.mat')
Hsoa2ib2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsoa2ib1.mat')
Hsoa2ib1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsoa1ib2.mat')
Hsoa1ib2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsoa1ib1.mat')
Hsoa1ib1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hscb2cb2.mat')
Hscb2cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hscb2cb1.mat')
Hscb2cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hscb1cb2.mat')
Hscb1cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hscb1cb1.mat')
Hscb1cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca2cb2.mat')
Hsca2cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca2cb1.mat')
Hsca2cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca2ca2.mat')
Hsca2ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca2ca1.mat')
Hsca2ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca1cb2.mat')
Hsca1cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca1cb1.mat')
Hsca1cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca1ca2.mat')
Hsca1ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca1ca1.mat')
Hsca1ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hoa2ca2.mat')
Hoa2ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hoa2ca1.mat')
Hoa2ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hoa1ca2.mat')
Hoa1ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hoa1ca1.mat')
Hoa1ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb2ib2.mat')
Hcb2ib2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb2ib1.mat')
Hcb2ib1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb2cb2.mat')
Hcb2cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb2cb1.mat')
Hcb2cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb1ib2.mat')
Hcb1ib2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb1ib1.mat')
Hcb1ib1=(a4+1i*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb1cb2.mat')
Hcb1cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb1cb1.mat')
Hcb1cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hca2ca2.mat')
Hca2ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hca2ca1.mat')
Hca2ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hca1ca2.mat')
Hca1ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hca1ca1.mat')
Hca1ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;
for k=2:401;w=2*pi*f
[Hcaca]=[Hca1ca1(k),Hca1ca2(k);Hca2ca1(k),Hca2ca2(k)]/(-w(k)^2);[Hcbcb]=[Hcb1cb1(k),Hcb1cb2(k);Hcb2cb1(k),Hcb2cb2(k)]/(-w(k)^2);[Hcbib]=[Hcb1ib1(k),Hcb1ib2(k);Hcb2ib1(k),Hcb2ib2(k)]/(-w(k)^2);[Hoaca]=[Hoa1ca1(k),Hoa1ca2(k);Hoa2ca1(k),Hoa2ca2(k)]/(-w(k)^2);
[Hscaca]=[Hsca1ca1(k),Hsca1ca2(k);Hsca2ca1(k),Hsca2ca2(k)]/(-w(k)^2);
[Hscacb]=[Hsca1cb1(k),Hsca1cb2(k);Hsca2cb1(k),Hsca2cb2(k)]/(-w(k)^2);
[Hscbcb]=[Hscb1cb1(k),Hscb1cb2(k);Hscb2cb1(k),Hscb2cb2(k)]/(-w(k)^2);
[Hsoaib]=[Hsoa1ib1(k),Hsoa1ib2(k);Hsoa2ib1(k),Hsoa2ib2(k)]/(-w(k)^2);KsD=inv(Hscaca*transpose(inv(Hscacb))*Hscbcb-Hscacb);Ks11D(k)=KsD(1,1);Ks22D(k)=KsD(2,2);
KsP=inv(Hcbib*inv(Hsoaib)*Hoaca-Hcaca-Hcbcb);Ks11P(k)=KsP(1,1);Ks22P(k)=KsP(2,2);
Ks11(k)=197800+j*w(k)*1344.2;Ks22(k)=189300+j*w(k)*1625.4;end
subplot(2,1,1);
semilogy(f,abs(Ks11D),'--r',f,abs(Ks11P),'-y',f,abs(Ks11),':b');subplot(2,1,2);
semilogy(f,abs(Ks22D),'--r',f,abs(Ks22P),'-y',f,abs(Ks22),':b');grid on,xlabel('頻率'),ylabel('動(dòng)剛度'),title('半對數(shù)頻譜圖'),legend('直接法','間接法','測量法');
第二篇:Matlab上機(jī)報(bào)告
Matlab上機(jī)實(shí)習(xí)報(bào)告
這兩周我們進(jìn)行了Matlab的上機(jī)。為了熟練掌握Matlab的各種操縱,學(xué)會(huì)使用Matlab解決復(fù)雜矩陣的運(yùn)算并學(xué)會(huì)用Matlab解決平差中的實(shí)際問題,我們以書上的例7-8為例,通過Matlab編程運(yùn)行來解決這道題,以熟悉Matlab的各項(xiàng)操縱和編程。
首先,我對該題進(jìn)行了分析,然后將解題思路和解題過程中需要的公式寫在了草稿紙上,然后,我比照Matlab的正確語言將各項(xiàng)公式輸進(jìn)了Matlab中,進(jìn)行調(diào)試運(yùn)行的時(shí)候并沒有一次就成功,因?yàn)榉痔?hào)等符號(hào)的不正確使用,矩陣輸入的一些錯(cuò)誤方式以及數(shù)據(jù)輸入上的一些錯(cuò)誤,一直沒能能算出正確的結(jié)果,在進(jìn)行了多次的調(diào)試改正后才最終得出了正確的結(jié)果。
通過這些天的上機(jī)實(shí)習(xí),我學(xué)會(huì)了將矩陣正確輸入Matlab 的方法、學(xué)會(huì)了利用Matlab進(jìn)行復(fù)雜矩陣的轉(zhuǎn)置、求逆等運(yùn)算,也學(xué)會(huì)了一些Matlab專有語言如diag等的應(yīng)用。可以說已經(jīng)掌握了Matlab大概的功能,在以后的學(xué)習(xí)中,如果有需要用到Matlab的地方,我相信我也一定能好好使用Matlab來解決學(xué)習(xí)解題中遇到的問題。短短兩周的實(shí)習(xí)很快結(jié)束。從這次實(shí)習(xí)中,我認(rèn)識(shí)到了親身實(shí)踐是我們大學(xué)生活中很有用也很充實(shí)的一步,通過實(shí)習(xí)能學(xué)到課堂上學(xué)不到的一些東西。在課堂上我們僅僅知道該怎么去做,但沒有親自實(shí)踐,只能靠想象,所以很多東西當(dāng)時(shí)都很難理解,很多東西不經(jīng)過實(shí)踐就不會(huì)印象深刻。在上級之前,讀過Matlab的相關(guān)書籍,覺得自己好像會(huì)了,但是在實(shí)際上機(jī)操縱過程中就會(huì)發(fā)現(xiàn)還是出現(xiàn)了很多這樣或那樣的問題。但是,經(jīng)過上機(jī)的實(shí)踐后,似乎就更容易理解其原理了,而且對其操縱與使用印象更深刻了。
總體來說,這幾次實(shí)習(xí)我受益匪淺。在探索該如何運(yùn)用Matlab課程算法實(shí)踐過程中,培養(yǎng)了我的邏輯思維能力,增加了實(shí)際編程能力。讓我在體會(huì)到分析實(shí)例與設(shè)計(jì)程序的艱辛的同時(shí),也體會(huì)到了最后成功的喜悅。總而言之,這次Matlab的上機(jī)實(shí)習(xí)收獲頗多,也讓我深刻感受到,時(shí)間也是獲得和掌握知識(shí)的一種好手段。
第三篇:Matlab實(shí)踐報(bào)告
MATLAB實(shí)踐報(bào)告
2016/2017學(xué)年 第一學(xué)期
專 業(yè): 電氣工程及其自動(dòng)化
班 級: 學(xué) 號(hào): 姓 名:
2017年 2 月
目錄
第1章 引言.....................................................................................................................................1 第2章MATLAB功能介紹............................................................................................................2 2.1 MATLAB功能特性...........................................................................................................2 2.1.1主要功能..................................................................................................................2 2.1.2 MATLAB產(chǎn)品系列重要功能................................................................................2 2.2MATLAB優(yōu)勢特點(diǎn)............................................................................................................2 2.2.1編程環(huán)境..................................................................................................................3 2.2.2簡單易用..................................................................................................................3 2.2.3強(qiáng)處理能力..............................................................................................................3 2.2.4應(yīng)用軟件開發(fā)..........................................................................................................3 2.3MATLAB應(yīng)用方面............................................................................................................3 第3章MATLAB課程設(shè)計(jì)任務(wù)....................................................................................................5 3.1任務(wù)一 MATLAB環(huán)境語法、基本運(yùn)算及繪圖..............................................................5 3.1.1目的..........................................................................................................................5 3.1.2原理..........................................................................................................................5 3.1.3內(nèi)容..........................................................................................................................5 3.2任務(wù)二 MATLAB數(shù)值運(yùn)算.............................................................................................9 3.2.1目的..........................................................................................................................9 3.2.2原理..........................................................................................................................9 3.2.3內(nèi)容..........................................................................................................................9 3.3任務(wù)三 MATLAB的符號(hào)計(jì)算.......................................................................................15 3.3.1目的........................................................................................................................15 3.3.2內(nèi)容........................................................................................................................15 3.4任務(wù)四 MATLAB基本編程方法...................................................................................18 3.4.1目的........................................................................................................................18 3.4.2內(nèi)容........................................................................................................................18 第4章 總結(jié)...................................................................................................................................23
第1章 引言
MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級技術(shù)計(jì)算語言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分。
MATLAB是matrix&laboratory兩個(gè)詞的組合,意為矩陣工廠(矩陣實(shí)驗(yàn)室)。是由美國mathworks公司發(fā)布的主要面對科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境。它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語言(如C、Fortran)的編輯模式,代表了當(dāng)今國際科學(xué)計(jì)算軟件的先進(jìn)水平。
MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通訊、圖像處理、信號(hào)檢測、金融建模設(shè)計(jì)與分析等領(lǐng)域。
MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點(diǎn),使MATLAB成為一個(gè)強(qiáng)大的數(shù)學(xué)軟件。在新的版本中也加入了對C,F(xiàn)ORTRAN,C++,JAVA的支持。
第2章MATLAB功能介紹
2.1 MATLAB功能特性
2.1.1主要功能
1.數(shù)值分析
2.數(shù)值和符號(hào)計(jì)算 3.數(shù)字圖像處理 4.數(shù)字信號(hào)處理 5.工程與科學(xué)繪圖 6.控制系統(tǒng)與仿真 7.通訊系統(tǒng)設(shè)計(jì)與仿真 8.財(cái)務(wù)與金融工程
2.1.2 MATLAB產(chǎn)品系列重要功能
·MATLAB?: MATLAB 語言的單元測試框架
·Trading Toolbox?: 一款用于訪問價(jià)格并將訂單發(fā)送到交易系統(tǒng)的新產(chǎn)品
·Financial Instruments Toolbox?: 赫爾-懷特、線性高斯和 LIBOR 市場模型的校準(zhǔn)和 Monte Carlo 仿真
·Image Processing Toolbox?: 使用有效輪廓進(jìn)行圖像分割、對 10 個(gè)函數(shù)實(shí)現(xiàn) C 代碼生成,對 11 個(gè)函數(shù)使用 GPU 加速
·Image Acquisition Toolbox?: 提供了用于采集圖像、深度圖和框架數(shù)據(jù)的 Kinect? for Windows?傳感器支持
·Statistics Toolbox?: 用于二進(jìn)制分類的支持向量機(jī)(SVM)、用于缺失數(shù)據(jù)的 PCA 算法和 Anderson-Darling 擬合優(yōu)度檢驗(yàn)
MATLAB工作界面
·Data Acquisition Toolbox?: 為 Digilent Analog Discovery Design Kit 提供了支持包
·Vehicle Network Toolbox?: 為訪問 CAN 總線上的 ECU 提供 XCP 2.2MATLAB優(yōu)勢特點(diǎn)
1.高效的數(shù)值計(jì)算及符號(hào)計(jì)算功能,能使用戶從繁雜的數(shù)學(xué)運(yùn)算分析中解脫出來;
2.具有完備的圖形處理功能,實(shí)現(xiàn)計(jì)算結(jié)果和編程的可視化;
3.友好的用戶界面及接近數(shù)學(xué)表達(dá)式的自然化語言,使學(xué)者易于學(xué)習(xí)和掌握;
4.功能豐富的應(yīng)用工具箱(如信號(hào)處理工具箱、通信工具箱等),為用戶提供了大量方便實(shí)用的處理工具。
2.2.1編程環(huán)境
MATLAB由一系列工具組成。這些工具方便用戶使用MATLAB的函數(shù)和文件,其中許多工具采用的是圖形用戶界面。包括MATLAB桌面和命令窗口、歷史命令窗口、編輯器和調(diào)試器、路徑搜索和用于用戶瀏覽幫助、工作空間、文件的瀏覽器。隨著MATLAB的商業(yè)化以及軟件本身的不斷升級,MATLAB的用戶界面也越來越精致,更加接近Windows的標(biāo)準(zhǔn)界面,人機(jī)交互性更強(qiáng),操作更簡單。而且新版本的MATLAB提供了完整的聯(lián)機(jī)查詢、幫助系統(tǒng),極大的方便了用戶的使用。簡單的編程環(huán)境提供了比較完備的調(diào)試系統(tǒng),程序不必經(jīng)過編譯就可以直接運(yùn)行,而且能夠及時(shí)地報(bào)告出現(xiàn)的錯(cuò)誤及進(jìn)行出錯(cuò)原因分析。
2.2.2簡單易用
MATLAB是一個(gè)高級的矩陣/陣列語言,它包含控制語句、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、輸入和輸出和面向?qū)ο缶幊烫攸c(diǎn)。用戶可以在命令窗口中將輸入語句與執(zhí)行命令同步,也可以先編寫好一個(gè)較大的復(fù)雜的應(yīng)用程序(M文件)后再一起運(yùn)行。新版本的MATLAB語言是基于最為流行的C++語言基礎(chǔ)上的,因此語法特征與C++語言極為相似,而且更加簡單,更加符合科技人員對數(shù)學(xué)表達(dá)式的書寫格式。使之更利于非計(jì)算機(jī)專業(yè)的科技人員使用。而且這種語言可移植性好、可拓展性極強(qiáng),這也是MATLAB能夠深入到科學(xué)研究及工程計(jì)算各個(gè)領(lǐng)域的重要原因。
2.2.3強(qiáng)處理能力
MATLAB是一個(gè)包含大量計(jì)算算法的集合。其擁有600多個(gè)工程中要用到的數(shù)學(xué)運(yùn)算函數(shù),可以方便的實(shí)現(xiàn)用戶所需的各種計(jì)算功能。函數(shù)中所使用的算法都是科研和工程計(jì)算中的最新研究成果,而且經(jīng)過了各種優(yōu)化和容錯(cuò)處理。在通常情況下,可以用它來代替底層編程語言,如C和C++。在計(jì)算要求相同的情況下,使用MATLAB的編程工作量會(huì)大大減少。MATLAB的這些函數(shù)集包括從最簡單最基本的函數(shù)到諸如矩陣,特征向量、快速傅立葉變換的復(fù)雜函數(shù)。函數(shù)所能解決的問題其大致包括矩陣運(yùn)算和線性方程組的求解、微分方程及偏微分方程的組的求解、符號(hào)運(yùn)算、傅立葉變換和數(shù)據(jù)的統(tǒng)計(jì)分析、工程中的優(yōu)化問題、稀疏矩陣運(yùn)算、復(fù)數(shù)的各種運(yùn)算、三角函數(shù)和其他初等數(shù)學(xué)運(yùn)算、多維數(shù)組操作以及建模動(dòng)態(tài)仿真等。
2.2.4應(yīng)用軟件開發(fā)
在開發(fā)環(huán)境中,使用戶更方便地控制多個(gè)文件和圖形窗口;在編程方面支持了函數(shù)嵌套,有條件中斷等;在圖形化方面,有了更強(qiáng)大的圖形標(biāo)注和處理功能,包括對性對起連接注釋等;在輸入輸出方面,可以直接向Excel和HDF5進(jìn)行連接。
2.3MATLAB應(yīng)用方面
MATLAB 產(chǎn)品族可以用來進(jìn)行以下各種工作:
●數(shù)值分析
●數(shù)值和符號(hào)計(jì)算 ●工程與科學(xué)繪圖
●控制系統(tǒng)的設(shè)計(jì)與仿真 ●數(shù)字圖像處理技術(shù) ●數(shù)字信號(hào)處理技術(shù) ●通訊系統(tǒng)設(shè)計(jì)與仿真 ●財(cái)務(wù)與金融工程
●管理與調(diào)度優(yōu)化計(jì)算(運(yùn)籌學(xué))
MATLAB 的應(yīng)用范圍非常廣,包括信號(hào)和圖像處理、通訊、控制系統(tǒng)設(shè)計(jì)、測試和測量、財(cái)務(wù)建模和分析以及計(jì)算生物學(xué)等眾多應(yīng)用領(lǐng)域。附加的工具箱(單獨(dú)提供的專用MATLAB函數(shù)集)擴(kuò)展了MATLAB 環(huán)境,以解決這些應(yīng)用領(lǐng)域內(nèi)特定類型的問題。
第3章MATLAB課程設(shè)計(jì)任務(wù)
3.1任務(wù)一 MATLAB環(huán)境語法、基本運(yùn)算及繪圖
3.1.1目的
1、掌握 MATLAB軟件使用的基本方法;
2、熟悉 MATLAB 的數(shù)據(jù)表示、基本運(yùn)算方法;
3、熟悉 MATLAB 繪圖命令及基本繪圖控制。
3.1.2原理
MATLAB環(huán)境是一種為數(shù)值計(jì)算、數(shù)據(jù)分析和圖形顯示服務(wù)的交互式的環(huán)境。MATLAB有3種窗口,即:命令窗口(The Command Window)、m-文件編輯窗口(The Edit Window)和圖形窗口(The Figure Window),而Simulink另外又有Simulink模型編輯窗口。
1.命令窗口(The Command Window)
當(dāng)MATLAB啟動(dòng)后,出現(xiàn)的最大的窗口就是命令窗口。用戶可以在提示符“>>”后面輸入交互的命令,這些命令就立即被執(zhí)行。
在MATLAB中,一連串命令可以放置在一個(gè)文件中,不必把它們直接在命令窗口內(nèi)輸入。在命令窗口中輸入該文件名,這一連串命令就被執(zhí)行了。因?yàn)檫@樣的文件都是以“.m”為后綴,所以稱為m-文件。
2.m-文件編輯窗口(The Edit Window)我們可以用m-文件編輯窗口來產(chǎn)生新的m-文件,或者編輯已經(jīng)存在的m-文件。在MATLAB主界面上選擇菜單“File/New/M-file”就打開了一個(gè)新的m-文件編輯窗口;選擇菜單“File/Open”就可以打開一個(gè)已經(jīng)存在的m-文件,并且可以在這個(gè)窗口中編輯這個(gè)m-文件。
3.1.3內(nèi)容
1、幫助命令,使用 help 命令,查找 exp(求冪)函數(shù)的使用方法,如圖3-1。
圖3-1 exp(求冪)函數(shù)的使用方法圖
2、矩陣運(yùn)算
(1)矩陣的乘法,已知 A=[1 2 3;2 3 4;1 3 5];B=[1 2 3;4 5 6;2 1 6],求 A*B,A^2,A.*B,A^2*B。結(jié)果如下:
(2)矩陣除法,已知 A=[1 2 3;3 5 6;4 8 6];B=[1 0 0;0 2 0;0 0 3];AB,A/B,A./B,A.B。結(jié)果如下:
(3)矩陣的轉(zhuǎn)置及共軛轉(zhuǎn)置,已知 A=[5+i,2-i,1;6*i,4,9-i];求 A.', A'。結(jié)果如下:
(4)使用冒號(hào)選出指定元素,已知: A=[1 2 3;4 5 6;7 8 9];求 A 中第 3 列前 2 個(gè)元素;A 中所有列第 2,3 行的元素。結(jié)果如下:
3、多項(xiàng)式
(1)求多項(xiàng)式 p(x)= x3 + 2x+ 4的根。結(jié)果如下:
(2)已知 A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4],求矩陣 A 的特征多項(xiàng)式;求特征多項(xiàng)式中未知數(shù)為 20 時(shí)的值; 把矩陣 A 作為未知數(shù)代入到多項(xiàng)式中。結(jié)果如下圖所示:
圖3-2 結(jié)果圖
圖3-3結(jié)果圖
4、基本繪圖命令
在同一坐標(biāo)系中繪制余弦曲線 y=cos(t-0.2)和正弦曲線 y=sin(t-0.3),t∈[0,2π];余弦曲線 y=cos(t-0.2)的線形為點(diǎn)劃線、顏色為綠色、數(shù)據(jù)點(diǎn)標(biāo)記為加號(hào);正弦曲線 y=sin(t-0.3)的線形為虛線、顏色為紅色、數(shù)據(jù)點(diǎn)標(biāo)記為星號(hào);顯示坐標(biāo)的范圍、刻度線、網(wǎng)絡(luò)線;標(biāo)注坐標(biāo)軸名稱、標(biāo)題。
程序:
圖3-4程序圖
圖3-5結(jié)果圖
3.2任務(wù)二 MATLAB數(shù)值運(yùn)算
3.2.1目的
1.熟悉Matlab中各類數(shù)據(jù),尤其是矩陣的定義、賦值和運(yùn)用; 2.了解Matlab的矩陣分析函數(shù)以及求線性方程組的數(shù)值解; 3.熟悉多項(xiàng)式運(yùn)算函數(shù)、數(shù)值插值。
3.2.2原理
1.創(chuàng)建矩陣的方法
a.直接輸入法規(guī)則:矩陣元素必須用[
]括住;矩陣元素必須用逗號(hào)或空格分隔;在[
]內(nèi)矩陣的行與行之間必須用分號(hào)分隔。逗號(hào)和分號(hào)的作用:逗號(hào)和分號(hào)可作為指令間的分隔符,matlab允許多條語句在同一行出現(xiàn)。分號(hào)如果出現(xiàn)在指令后,屏幕上將不顯示結(jié)果。
b.用matlab函數(shù)創(chuàng)建矩陣:空陣 [
] —
matlab允許輸入空陣,當(dāng)一項(xiàng)操作無結(jié)果時(shí),返回空陣;rand —— 隨機(jī)矩陣;eye —— 單位矩陣;zeros ——全部元素都為0的矩陣;ones ——全部元素都為1的矩陣
c.矩陣的修改:可用?鍵找到所要修改的矩陣,用?鍵移動(dòng)到要修改的矩陣元素上即可修改;指令修改:可以用A(?,?)= ? 來修改。
2.矩陣運(yùn)算
a.矩陣加、減(+,-)運(yùn)算規(guī)則:(1)相加、減的兩矩陣必須有相同的行和列兩矩陣對應(yīng)元素相加減。(2)允許參與運(yùn)算的兩矩陣之一是標(biāo)量。標(biāo)量與矩陣的所有元素分別進(jìn)行加減操作。
b.矩陣乘(??,./,.)運(yùn)算規(guī)則:A矩陣的列數(shù)必須等于B矩陣的行數(shù);標(biāo)量可與任何矩陣相乘。
c.矩陣乘方—— a^n,a^p,p^a a ^ p —— a 自乘p次冪,對于p的其它值,計(jì)算將涉及特征值和特征向量,如果p是矩陣,a是標(biāo)量,a^p使用特征值和特征向量自乘到p次冪;如a,p都是矩陣,a^p則無意義。
d.多項(xiàng)式運(yùn)算
matlab語言把多項(xiàng)式表達(dá)成一個(gè)行向量,該向量中的元素是按多項(xiàng)式降冪排列的。
f(x)=anxn+an-1xn-1+……+a0 可用行向量 p=[an an-1 …… a1 a0]表示;poly —— 產(chǎn)生特征多項(xiàng)式系數(shù)向量
e.代數(shù)方程組求解
matlab中有兩種除運(yùn)算左除和右除。
3.2.3內(nèi)容
1.輸入下列向量(矩陣),>> g = [1 2 3 4];h = [4 3 2 1]。
2.分別執(zhí)行以下數(shù)組點(diǎn)運(yùn)算,>> s1 = g + h, s2 = g.*h, s3 = g.^h,s4 = g.^2, s5 = 2.^h。
3.輸入下列特殊矩陣,>>A=[ ],>>A=eye(10),A=rand(10,15),>> A=randn(5,10),>> A=zeros(5,10)。
圖3-6 結(jié)果圖
圖3-7 結(jié)果圖
圖3-8 結(jié)果圖
>>A=ones(5,10),>>
圖3-9 結(jié)果圖
圖3-10 結(jié)果圖
4.輸入下列矩陣及矩陣函數(shù)
>> A=[2 0 –1;1 3 2];B=[1 7 –1;4 2 3;2 0 1];>> M = A*B
% 矩陣A與B按矩陣運(yùn)算相乘 >> det_B = det(B)
% 矩陣A的行列式
>> rank_A = rank(A)
% 矩陣A的秩 >> inv_B = inv(B)
% 矩陣B的逆矩陣
>> [V,D] = eig(B)
% 矩陣B的特征值矩陣V與特征向量構(gòu)成的矩陣D
>> X = A/B
% A/B = A*B-1,即XB=A,求X >> Y = BA’
%
BA’ = B-1*A’,即BY=A’,求Y
5.多項(xiàng)式運(yùn)算
>> p=[1 2 0-5 6] >> rr=roots(p)>> pp=poly(rr)>> s=[0 0 1 2 3] >> c=conv(p,s)>> d=polyder(p)>> x=-1:0.1:2;>> y=polyval(p,x)
43% 表示多項(xiàng)式p(x)?x?2x?5x?6 % 求多項(xiàng)式p的根
% 由根的列向量求多項(xiàng)式系數(shù)
2s(x)?x?2x?3 % 表示多項(xiàng)式
% 多項(xiàng)式乘積
% 多項(xiàng)式微分
% 計(jì)算多項(xiàng)式的值
圖3-11 結(jié)果圖
10(s?3)6.有理多項(xiàng)式: G(s)?(s?1)(s2?s?3)
>> n=conv([10],[1 3])
% 定義分子多項(xiàng)式
>> d=conv([1 1],[1 1 3])
% 定義分母多項(xiàng)式
>> [r,p,k]=residue(n,d)
% 進(jìn)行部分分式展開
>> p1=[1-p(1)],p2=[1-p(2)]
% 定義兩個(gè)極點(diǎn)多項(xiàng)式p1(s)=s-p(1),p2(s)=s-p(2)>> den=conv(p1,p2)
% 求分母多項(xiàng)式den=p1(s)*p2(s)
>> r1=r(1),r2=r(2)>> num=conv(r1,p2)+conv(r2,p1)% 求分子多項(xiàng)式
>> [num,den]=residue(r,p,k)% 根據(jù)r,p,k的值求有理多項(xiàng)式
7.函數(shù)插值運(yùn)算
線形樣條插值
>>x=0:10 >> y=sin(x)>> x0=[ 3.4 4.7 6.5 8.2]
>> y0=interp1(x,y,x0)
% 線形插值 >> x1=0:0.1:10 >> y1=sin(x1)>> plot(x1,y1,'r:',x,y,'b*',x0,y0,'g.')%
插值比較
圖3-12 結(jié)果圖
3.3任務(wù)三 MATLAB的符號(hào)計(jì)算
3.3.1目的
1、掌握 MATLAB符號(hào)表達(dá)式的創(chuàng)建及代數(shù)運(yùn)算;
2、掌握 MATLAB符號(hào)微積分;
3、掌握MATLAB 符號(hào)方程的求解。
3.3.2內(nèi)容
?a11a12?
1、求矩陣A?a21a22???a31a32
a13?a23??的行列式、逆陣和特征值。a33?? 15
圖3-13 結(jié)果圖
432 2.因式分解x?5x?5x?5x?6
432(x?1)?5x?5(x?2)?5x?1的同類項(xiàng)。3.合并
4(x?1)4.求的展開式。
5.求下列式子極限 :
lim?x?2ln(sinx)
(??2x)
6.求下列函數(shù)的導(dǎo)數(shù)
y?excosx?x3及當(dāng)x=3時(shí)的導(dǎo)數(shù)值。
7.已知矩陣
?exA???sinx x2?2x??lnx?,求A的導(dǎo)數(shù)
8.求下列積分:
(1)
?sinx1?sinx2dx(2)
??0sinx3?sinx5dx
9.求微分方程
x2?2xy?y2?(y2?xy)dy?0dxy|x?1?1
3.4任務(wù)四 MATLAB基本編程方法
3.4.1目的
1、掌握 MATLAB 軟件使用的基本方法;
2、熟悉 MATLAB 程序設(shè)計(jì)的基本方法。
3.4.2內(nèi)容
1、編寫程序完成如下功能:提示用戶輸入1或者2,當(dāng)用戶輸入1時(shí),對產(chǎn)生的隨機(jī)序列進(jìn)行降序排序;當(dāng)用戶輸入2時(shí),對產(chǎn)生的隨機(jī)序列進(jìn)行升序排列。
程序如下: clear;
syms n ikey=0;while(ikey==0)s1=input('請輸入[1/2]?','s');x=randperm(10)if(s1=='2')
ikey=1;
y=sort(x,'ascend');
disp(['升序排列的向量為:',num2str(y)]);else if(s1=='1')
ikey=1;
y=sort(x,'descend');
disp(['降序排列的向量為:',num2str(y)]);
end break end end
圖3-14 結(jié)果圖
2、編寫程序?qū)崿F(xiàn)如下功能:如果想對一個(gè)變量 x 自動(dòng)賦值,當(dāng)從鍵盤輸入 y 或 Y 時(shí)(表示是),x 自動(dòng)賦為 1;當(dāng)從鍵盤輸入 n 或 N 時(shí)(表示否),x 自動(dòng)賦為 0;輸入其他字符時(shí)終止程序。
程序如下: ikey=0;while(ikey==0)s1=input('若給X賦值請輸入[y/n]?','s');if(s1=='y'|s1=='Y'), ikey=1;x=1
else if(s1=='n'|s1=='N')ikey=1;x=0,end break end End
3-15 結(jié)果圖
3.編寫函數(shù)實(shí)現(xiàn)如下功能:輸入一個(gè)百分制的成績,要求輸出成績的等級,其中90-100分輸出為優(yōu)秀,80-89分輸出為良好,70-79輸出為中等,60-69輸出為及格,60分以下不及格,如果輸入的數(shù)據(jù)不是百分制,顯示出錯(cuò)信息并提示:請輸出百分制成績。
程序如下:
clear;m=input('請輸入一個(gè)數(shù)值:');m=ceil(m/10);switch m case {10,9}
disp('優(yōu)秀');case 8
disp('良好');case 7
disp('中等');case 6
disp('及格');case {5,4,3,2,1,0}
disp('不及格');otherwise
disp('輸入有誤!')End 運(yùn)行結(jié)果:
請輸入百分之原始成績:92 五級制成績?yōu)椋?優(yōu)秀
請輸入百分之原始成績:88 五級制成績?yōu)椋?良好
請輸入百分之原始成績:64 五級制成績?yōu)椋?及格
請輸入百分之原始成績:56 五級制成績?yōu)椋?不及格
4.編寫函數(shù)計(jì)算s=n!syms n s=1 N=input('data n:');for i=1:N s=s*i;end s s = 1 data n:6 s = 720
5.編寫程序,計(jì)算1+3+5+…(2n+1)的值,使用input語句輸入n的值。程序如下:
n=input('input: n=');s = sum(1:2:(2*n+1))input: n=7 運(yùn)行結(jié)果: s = 64
第4章 小結(jié)
通過這次對MATLAB的親身操作和實(shí)踐,學(xué)習(xí)掌握了許多原本不知道的或者不太熟悉的命令。比如說相關(guān)m文件的建立,畫圖用到的標(biāo)注,配色,坐標(biāo)控制,同一張圖里畫幾幅不同的圖像,相關(guān)參數(shù)的設(shè)置以及相關(guān)函數(shù)的調(diào)用格式等等。
就拿建立一個(gè)數(shù)學(xué)方程而言,通過設(shè)置不同的參數(shù)達(dá)到所需要的要求和結(jié)果,而且還可以在不同的窗口建立不同的函數(shù)而達(dá)到相同的效果,比如說可以再命令窗口和m文件中通過不同的命令設(shè)置的到相同的所需的效果圖。而自己對于矩陣及閉環(huán)傳遞函數(shù)的建立原本所掌握的知識(shí)幾乎為零,而通過這次實(shí)驗(yàn)使我徹底的掌握了相關(guān)的命令操作和處理的方法,在這里我們不僅可以通過建立函數(shù)和參數(shù)來達(dá)到目標(biāo)效果,而且還可以通過可視化的編程達(dá)到更快更方便,更簡潔的效果。就拿可視化編程而言原本根本就只是聽說而已罷了,從來就沒有親身去嘗試過,然而現(xiàn)在自己卻可以和容易的通過搭建不同功能木塊來實(shí)現(xiàn)相關(guān)的函數(shù)及功能。這些在原本根本就不敢相信,然而通過MATLAB的學(xué)習(xí)和實(shí)驗(yàn)親身操作這些原本看似不可能的操作在此就變的輕而易舉的事了。
要想取得更大的成績就得不斷的去努力學(xué)習(xí)和汲取相關(guān)的知識(shí)和技巧。萬不可自以為傲,裹足不前,MATLAB真的是個(gè)非常強(qiáng)大和有用的工具我們真正的能把它學(xué)懂學(xué)透的話還是需要下非常大的功夫和努力的。然而,不是說興趣才是最大的老師嘛,我也相信,只要你自己有興趣,即使它再怎么強(qiáng)大和難搞,我們能做的還是非常多的,關(guān)鍵的就只是在于你自己的態(tài)度了。我這里想說的事,MATLAB對于我來說是非常有吸引力的,我不敢說自己多么喜歡它,但是興趣確實(shí)蠻高的,所以我相信在以后的學(xué)習(xí)和工作當(dāng)中MATLAB將成為我非常有用的幫忙工具和好伙伴,也許這要說有點(diǎn)太草率了,但是我覺得對它的評價(jià)怎么也不會(huì)讓每一個(gè)接觸過它的人吝嗇是自己贊美之詞。它不僅僅可以用來建模分析函數(shù),還可以用來進(jìn)行圖形的建模和仿真,還可以用來分析系統(tǒng)和函數(shù)的參數(shù)穩(wěn)定性等等。
第四篇:matlab實(shí)踐報(bào)告
MATLAB 實(shí)踐 課程設(shè)計(jì)
學(xué)生姓名:
學(xué)
號(hào):
專業(yè)班級:
指導(dǎo)教師:
二○一二
年
六 月 二十 日1
《》
目錄
1.設(shè)計(jì)目的???????????????????3 2.題目分析???????????????????3 3.總體設(shè)計(jì)???????????????????3 4.具體設(shè)計(jì)???????????????????4 5.結(jié)果分析???????????????????32 6.心得體會(huì)???????????????????33 6.附錄代碼???????????????????35
1、設(shè)計(jì)目的
綜合運(yùn)用MATLAB工具箱實(shí)現(xiàn)圖像處理的GUI程序設(shè)計(jì)。
2、題目分析
1.課程設(shè)計(jì)的基本要求
1)熟悉和掌握MATLAB 程序設(shè)計(jì)方法 2)掌握MATLAB GUI 程序設(shè)計(jì) 3)學(xué)習(xí)和熟悉MATLAB圖像處理工具箱
4)學(xué)會(huì)運(yùn)用MATLAB工具箱對圖像進(jìn)行處理和分析 2. 課程設(shè)計(jì)的內(nèi)容
學(xué)習(xí)MATLAB GUI程序設(shè)計(jì),利用MATLAB圖像處理工具箱,設(shè)計(jì)和實(shí)現(xiàn)自己的Photoshop。要求:按照軟件工程方法,根據(jù)需求進(jìn)行程序的功能分析和界面設(shè)計(jì),給出設(shè)計(jì)詳細(xì)說明。然后按照自己擬定的功能要求進(jìn)行程序設(shè)計(jì)和調(diào)試。
1)圖像的讀取和保存。
2)設(shè)計(jì)圖形用戶界面,讓用戶能夠?qū)D像進(jìn)行任意的亮度和對比度變化調(diào)整,顯示和對比變換前后的圖像。
3)設(shè)計(jì)圖形用戶界面,讓用戶能夠用鼠標(biāo)選取圖像感興趣區(qū)域,顯示和保存該選擇區(qū)域。
4)編寫程序通過最近鄰插值和雙線性插值等算法將用戶所選取的圖像區(qū)域進(jìn)行放大和縮小整數(shù)倍的操作,并保存,比較幾種插值的效果。
5)圖像直方圖統(tǒng)計(jì)和直方圖均衡,要求顯示直方圖統(tǒng)計(jì),比較直方圖均衡后的效果。
6)能對圖像加入各種噪聲,并通過幾種濾波算法實(shí)現(xiàn)去噪并顯示結(jié)果。7)設(shè)計(jì)圖形用戶界面,讓用戶能夠?qū)D像進(jìn)行偽彩色和真彩色處理。8)能夠?qū)D像進(jìn)行一些特效處理,如底片,浮雕,倒影等
3、總體設(shè)計(jì)
這次的設(shè)計(jì)的功能按鈕主要是菜單部分,菜單功能上的偽彩色、真彩色增強(qiáng)和各種特效算是比較有特色的地方,其他的功能是一些圖像處理的基本實(shí)現(xiàn)大多可以通過Matlab自帶的一些現(xiàn)成函數(shù)來調(diào)用以實(shí)現(xiàn),關(guān)鍵是要注意它的使用語法和支持的圖像類型。
具體的菜單功能和面板設(shè)計(jì)如下圖所示:
4、具體設(shè)計(jì) 4.1 菜單的設(shè)計(jì) 通過Menu Editor創(chuàng)建如下菜單
4.2 圖像的讀取和保存
1)利用matlab中 “ uigetfile”、“imread” “imshow”實(shí)現(xiàn)圖像文件的讀取與顯示:
[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'載入圖像');if isequal(filename,0)lisequal(pathname,0)errordlg('沒有選中文件','出錯(cuò)');return;else
file=[pathname,filename];global S %設(shè)置一個(gè)全局變量S,保存初始圖像路徑,以便之后的還原操作
S=file;x=imread(file);set(handles.axes1,'HandleVisibility','ON');axes(handles.axes1);imshow(x);set(handles.axes1,'HandleVisibility','OFF');axes(handles.axes2);imshow(x);handles.img=x;guidata(hObject,handles);End 程序關(guān)鍵部分:
通過[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'載入圖像')選擇相應(yīng)路徑打開的圖像;通過file=[pathname,filename];x=imread(file);讀取選中的圖像;最后,通過imshow(x)在顯示區(qū)域上顯示圖像。2)
利用“uiputfile”、“imwrite”函數(shù)實(shí)現(xiàn)圖像文件的保存。
[sfilename ,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存圖像文件','untitled.jpg');if ~isequal([sfilename,sfilepath],[0,0])sfilefullname=[sfilepath ,sfilename];imwrite(handles.img,sfilefullname);else
msgbox('你按了取消鍵','保存失敗');end
程序關(guān)鍵部分:
通[sfilename ,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存圖像文件','untitled.jpg')選擇圖像文件保存的路徑與格式;然后,通過sfilefullname=[sfilepath ,sfilename];imwrite(handles.img,sfilefullname);實(shí)現(xiàn)對圖像的保存。3)程序的退出 clc;close all;close(gcf);clear;4.3 對圖像進(jìn)行任意的亮度和對比度變化調(diào)整,顯示和對比變換前后的圖像。1)亮度調(diào)節(jié)
%亮度調(diào)節(jié)
axes(handles.axes2);prompt={'調(diào)整倍數(shù)'};defans={''};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});y=imadjust(handles.img,[ ], [ ],p1);%亮度調(diào)節(jié)
imshow(y);handles.img=y;guidata(hObject,handles);
2)對比度調(diào)節(jié) %對比度調(diào)節(jié)
axes(handles.axes2);prompt={'調(diào)整倍數(shù)'};defans={''};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});7
y=immultiply(handles.img,p1);%對比度調(diào)節(jié)
imshow(y);handles.img=y;guidata(hObject,handles);
4.4 用鼠標(biāo)選取圖像感興趣區(qū)域,顯示和保存該選擇區(qū)域。
通過imcrop(x)函數(shù)來實(shí)現(xiàn)對圖片某一區(qū)域的截取,截取的圖片在右框中顯示。結(jié)合“保存為?”,可把截圖處理后的圖片保存在指定路徑。%截圖 global T axes(handles.axes2);T=getimage;x=imcrop(handles.img);%截圖 imshow(x);handles.img=x;guidata(hObject,handles);
4.5 圖像轉(zhuǎn)化為灰度圖像。
利用rgb2gray(X)函數(shù)對其他圖像進(jìn)行灰度圖像的轉(zhuǎn)化。%灰度變換 global T axes(handles.axes2);T=getimage;x=rgb2gray(handles.img);%灰度變換
imshow(x);handles.img=x;
guidata(hObject,handles);
4.6對圖像進(jìn)行放大和縮小整數(shù)倍的操作。
通過imresize(X,n,mode)函數(shù)對圖像X進(jìn)行放大或者縮小。N放大縮小倍數(shù),mode為采用的方式,通過處理后可發(fā)現(xiàn)保存的圖片的比原圖放大了(縮小了)。1)放大
%最近鄰插值法放大
global T axes(handles.axes2);T=getimage;prompt={'輸入放大倍數(shù):'};defans={''};p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans);p1=str2num(p{1});y=imresize(handles.img,p1,'nearest');%最近鄰插值法放大 imshow(y);handles.img=y;guidata(hObject,handles);%雙線性插值法放大 global T axes(handles.axes2);T=getimage;prompt={'輸入放大倍數(shù):'};defans={''};p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans);p1=str2num(p{1});y=imresize(handles.img,p1,'bilinear');%雙線性插值法放大 imshow(y);handles.img=y;guidata(hObject,handles);
2)縮小
%最近鄰插值法縮小 global T axes(handles.axes2);T=getimage;prompt={'輸入放大倍數(shù):'};defans={''};p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans);p1=str2num(p{1});y=imresize(handles.img,p1,'nearest');%最近鄰插值法縮小 imshow(y);handles.img=y;guidata(hObject,handles);%雙線性插值法縮小 global T axes(handles.axes2);T=getimage;prompt={'輸入放大倍數(shù):'};defans={''};p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans);p1=str2num(p{1});y=imresize(handles.img,p1,'bilinear');%雙線性插值法縮小 imshow(y);handles.img=y;guidata(hObject,handles);4.7圖像直方圖統(tǒng)計(jì)和直方圖均衡。(1)通過imhist函數(shù)實(shí)現(xiàn)直方圖統(tǒng)計(jì)。
由于imhist函數(shù)只能對灰度圖像進(jìn)行直方圖統(tǒng)計(jì),所以要先判斷圖像是彩色圖像還是灰度圖像,分兩種情況處理。global T axes(handles.axes2);T=getimage;s=handles.img;if isrgb(s)%對灰度圖像和彩色圖像分別處理 for k=1:3 x(:,:,k)=imhist(s(:,:,k));%直方圖統(tǒng)計(jì)
end else
x=imhist(handles.img);%直方圖統(tǒng)計(jì) end
x1=x(1:10:256);horz=1:10:256;bar(horz,x1);axis([0 255 0 15000]);set(handles.axes2,'xtick',0:50:255);set(handles.axes2,'ytick',0:2000:15000);
(2)通過histeq(X)函數(shù)實(shí)現(xiàn)直方圖均衡。
因?yàn)榇撕瘮?shù)只能對灰度圖像進(jìn)行直方圖均衡故應(yīng)先將彩圖轉(zhuǎn)為灰度圖像所以要先判斷圖像是彩色圖像還是灰度圖像,分兩種情況處理。%直方圖均衡化 global T axes(handles.axes2);T=getimage;s=handles.img;if isrgb(s)%對灰度圖像和彩色圖像分別處理 a=histeq(s(:,:,1));%對每一種基色直方圖均衡 b=histeq(s(:,:,2));c=histeq(s(:,:,3));k(:,:,1)=a;
k(:,:,2)=b;k(:,:,3)=c;imshow(k);else
y=histeq(s);%對灰度圖像直方圖均衡
imshow(y);handles.img=y;guidata(hObject,handles);end
4.8撤銷和還原
1)撤銷上一步的操作,通過設(shè)一個(gè)全局變量T保存是上一次操作后的圖像。%撤銷
axes(handles.axes2);global T imshow(T);handles.img=T;guidata(hObject,handles);2)通過一個(gè)全局變量保存原始圖像路徑,在需要還原至原始圖像時(shí),重新讀取該全局變量即可。%還原
global S axes(handles.axes2);y=imread(S);
f=imshow(y);handles.img=y;guidata(hObject,handles);4.9邊緣采集 %邊緣采集 global T axes(handles.axes2);T=getimage;s=handles.img;if isrgb(s)%對灰度圖像和彩色圖像分別處理 for k=1:3 f(:,:,k)=edge(s(:,:,k),'sobel');% 用sobel算子,還有roberts算子,prewitt算子等 end else
f=edge(s,'sobel');end
imshow(f);handles.img=f;guidata(hObject,handles);
4.9加入各種噪聲 1)高斯噪聲
高斯噪聲是指它的概率密度函數(shù)服從高斯分布的一類噪聲。高斯噪聲是一種隨機(jī)噪聲,它完全由其時(shí)變平均值和兩瞬時(shí)的協(xié)方差函數(shù)來確定。%高斯噪聲
axes(handles.axes2);y=imnoise(handles.img,'gaussian',0,0.05);%加高斯噪聲 imshow(y);handles.img=y;guidata(hObject,handles);
2)椒鹽噪聲
椒鹽噪聲是由圖像傳感器,傳輸信道,解碼處理等產(chǎn)生的黑白相間的亮暗點(diǎn)噪聲。椒鹽噪聲往往由圖像切割引起。去除脈沖干擾級椒鹽噪聲最常用的算法是中值濾波。%?椒鹽噪聲
axes(handles.axes2);y=imnoise(handles.img,'salt & pepper',0.08);%加椒鹽噪聲
imshow(y);handles.img=y;guidata(hObject,handles);
3)斑點(diǎn)噪聲
斑點(diǎn)噪聲是SAR成像系統(tǒng)的一大特色,源自基本分辨單元內(nèi)地物的隨機(jī)散射,在圖像上表現(xiàn)為信號(hào)相關(guān)(如在空間上相關(guān))的小斑點(diǎn),它既降低了圖像的畫面質(zhì)量,又嚴(yán)重影響圖像的自動(dòng)分割、分類、目標(biāo)檢測以及其它定量專題信息的提取。SAR斑點(diǎn)噪聲的抑制可通過非相干多視處理,也可使用空間域?yàn)V波實(shí)現(xiàn)。%斑點(diǎn)噪聲
axes(handles.axes2);y=imnoise(handles.img,'speckle',0.04);%加斑點(diǎn)噪聲 imshow(y);handles.img=y;guidata(hObject,handles);14
4)泊松噪聲 %泊松噪聲
axes(handles.axes2);y=imnoise(handles.img,'poisson');%加泊松噪聲 imshow(y);handles.img=y;guidata(hObject,handles);
4.10濾波 1)高通濾波
高通濾波是只對低于某一給定頻率以下的頻率成分有衰減作用,而允許這個(gè)截止頻率以上的頻率成分通過,并且沒有相位移的濾波過程。主要用來消除低頻噪聲,保留高頻部分。圖像中的邊緣或線條與圖像頻譜中的高頻分量相對應(yīng),因?yàn)椴捎酶咄V波器讓高頻成分順利通過,可以使圖像的邊緣或線條更加清楚,從而識(shí)相圖像的銳化。%高通濾波
axes(handles.axes2);x=(handles.img);f=double(x);% 數(shù)據(jù)類型轉(zhuǎn)換,matlab不支持圖像的無符號(hào)整型的計(jì)算 k=fft2(f);% 傅里葉變換 g=fftshift(k);% 轉(zhuǎn)換數(shù)據(jù)矩陣 [M,N]=size(g);nn=2;d0=5;%截止頻率5 m=fix(M/2);n=fix(N/2);15
for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2);% 計(jì)算高通濾波器傳遞函數(shù)
if d<=d0 h=0;else h=1;end
result(i,j)=h*g(i,j);end end
result=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));imshow(y3);handles.img=y3;guidata(hObject,handles);% 顯示濾波處理后的圖像
2)低通濾波
圖像的邊緣以及噪聲干擾在圖像的頻域上對應(yīng)于圖像傅里葉變換中的高頻部分,而圖像的背景區(qū)則對應(yīng)于低頻部分,因此可以用頻域低通濾波法去除圖像的高頻部分,以去掉噪聲使圖像平滑。對于低通濾波器截止頻率的不同,會(huì)發(fā)生不同程度的“振鈴”現(xiàn)象,同時(shí)圖像變模糊了。截止頻率月底,濾除噪聲越徹底,高頻分量損失越嚴(yán)重,但圖像就越模糊。%低通濾波器
axes(handles.axes2);y1=handles.img;f=double(y1);% 數(shù)據(jù)類型轉(zhuǎn)換,matlab不支持圖像的無符號(hào)整型的計(jì)算 g=fft2(f);% 傅里葉變換 g=fftshift(g);% 轉(zhuǎn)換數(shù)據(jù)矩陣
[M,N]=size(g);nn=2;%二階巴特沃斯低通濾波器 d0=50;%截止頻率50 m=fix(M/2);n=fix(N/2);for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn));% 計(jì)算低通濾波器傳遞函數(shù) result(i,j)=h*g(i,j);end end
result=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));imshow(y3);% 顯示處理后的圖像 handles.img=y3;guidata(hObject,handles);
3)中值濾波
中值濾波是抑制噪聲的非線性處理方法。給定一個(gè)濾波窗口,對于二維圖像,窗口形狀可以使矩形,圓形及十字形等,對于位于中間位置的那個(gè)數(shù)值稱為這n個(gè)數(shù)值的中值。中值濾波的算法運(yùn)算簡單,易于實(shí)現(xiàn),而且能較好地保護(hù)邊界,但有時(shí)會(huì)失掉圖像中的細(xì)線和小塊的目標(biāo)區(qū)域。%中值濾波
axes(handles.axes2);a=handles.img;if isrgb(a)%對灰度和彩色圖像分別處理
for k=1:3 y(:,:,k)=medfilt2(a(:,:,k));%中值濾波
end
else
y=medfilt2(a);%中值濾波 end
imshow(y);handles.img=y;guidata(hObject,handles);
4.11圖像變換 1)傅里葉變換
為了得到圖像的頻譜圖,先要對數(shù)據(jù)進(jìn)行傅里葉變換,用fft2函數(shù)對二維數(shù)據(jù)進(jìn)行快速傅里葉變換,同時(shí)為了更好的觀察頻譜圖,需要把fft2變換后的數(shù)據(jù)進(jìn)行平移,利用fftshift函數(shù),把快速傅里葉變換的DC 組件移到光譜中心。這樣圖像能量的低頻成分將集中到頻譜中心,圖像上的邊緣、線條細(xì)節(jié)信息等高頻成分將分散在圖像頻譜的邊緣。%傅里葉變換
axes(handles.axes2);a=handles.img;if isrgb(a)m=fft2(a(:,:,1));%對圖像執(zhí)行二維傅里葉變換 y=fftshift(m);%使低頻能量集中在中心位置 else
m=fft2(a);%對圖像執(zhí)行二維傅里葉變換 y=fftshift(m);%使低頻能量集中在中心位置 end
imshow(log(abs(y)),[]);%使用對數(shù)使低頻部分顯示效果更明顯
2)離散余弦變換
傅里葉變化的一個(gè)最大問題是:它的參數(shù)都是復(fù)數(shù),在數(shù)據(jù)的描述上相當(dāng)于實(shí)數(shù)的兩倍,不易計(jì)算,因此希望有一種能達(dá)到相同功能但數(shù)據(jù)量有不大的變換,在這個(gè)思想的指導(dǎo)下,產(chǎn)生了離散余弦變換。%離散余弦變換 global T axes(handles.axes2);T=getimage;a=handles.img;gray=rgb2gray(a);d=dct2(gray);%對圖像進(jìn)二維行離散余弦變換
imshow(log(abs(d)),[]);%使用對數(shù)使低頻部分顯示效果更明顯
3)Radon變換
Radon函數(shù)計(jì)算指定方向上圖像矩陣的投影,計(jì)算一定方向上平行光束的線積分。光線間隔1個(gè)象素單位。為了表示圖像,radon變換通過圍繞圖像中心旋轉(zhuǎn)光源來從不同角度獲得圖像的平行光投影。%Radon變換 global T axes(handles.axes2);theta=0:1:180;%對每個(gè)角度做radon變換處理 [r,xp]=radon(T,theta);%Radon變換
imagesc(theta,xp,r);xlabel('degrees');%為x軸做標(biāo)注 colorbar;%顯示顏色條
4.12圖像增強(qiáng) 1)偽彩色增強(qiáng)
對于灰度圖像,人眼分辨的灰度級只有十幾到二十幾,而對不同的亮度和色彩圖像則可以達(dá)到幾百甚至上千,因此偽彩色增強(qiáng)是將一個(gè)波段或單一的黑白圖像變換為彩色圖像,從而把人眼不能區(qū)分的微小的灰度差別顯示為明顯的色彩差異,更便于解譯和提取有用信息。
偽彩色增強(qiáng)的方法主要有以下三種:亮度切割技術(shù),灰度彩色變換,頻域?yàn)V波法。
我采用的是亮度切割技術(shù),亮度切割技術(shù)是偽彩色增強(qiáng)中最簡單的一種方法,它是對圖像亮度范圍進(jìn)行分割,使一定亮度間隔對應(yīng)于某一顏色。對于切割平面以下的分配一中顏色,平面以上的再分配一種顏色。這樣,便可以把一幅灰度圖像變成一幅偽彩色圖像,此法比較直觀簡單,缺點(diǎn)使變換出的彩色數(shù)目有限而且顏色生硬不夠調(diào)和,量化噪聲大。%偽彩色增強(qiáng) global T axes(handles.axes2);T=getimage;a=handles.img;c=zeros(size(a));%a為原灰度圖像矩陣
pos=find(a<100);%找到灰度值小于100的 c(pos)=a(pos);b(:,:,3)=c;%變?yōu)樗{(lán)色
c=zeros(size(a));%a為原灰度圖像矩陣
pos=find((a>=100)&(a<230));%找到灰度值大于100小于230的 c(pos)=a(pos);b(:,:,2)=c;%變?yōu)榫G色
c=zeros(size(a));%a為原灰度圖像矩陣
pos=find(a>=230);%找到灰度值大于230的c(pos)=a(pos);b(:,:,1)=c;%變?yōu)榧t色
b=uint8(b);axes(handles.axes2);imshow(b);handles.img=b;guidata(hObject,handles);
2)真彩色增強(qiáng)
真彩色增強(qiáng)時(shí)從彩色到彩色的一種變換。通過一定的映射函數(shù)變換成新的三基色分量,彩色合成使得增強(qiáng)圖像中各目標(biāo)呈現(xiàn)出與原圖像不同的彩色。通過真彩色增強(qiáng)我們可以達(dá)到變換圖像引起人們的特別關(guān)注,以及通過人眼對不同顏色的靈敏度的不同,使景物呈現(xiàn)出與人眼色覺相匹配的顏色,以提高人眼對目標(biāo)的分辨力。%真彩色增強(qiáng) global T axes(handles.axes2);T(:,:,1)=immultiply(T(:,:,1),0.3);%對R基色每個(gè)元素乘以0.3 T(:,:,2)=immultiply(T(:,:,2),0.2);%對G基色每個(gè)元素乘以0.2 T(:,:,3)=immultiply(T(:,:,3),0.5);%對B基色每個(gè)元素乘以0.5 axes(handles.axes2);imshow(T);handles.img=T;guidata(hObject,handles);21
4.12圖像翻轉(zhuǎn) 1)上下翻轉(zhuǎn) %上下翻轉(zhuǎn) global T axes(handles.axes2);T=getimage;a=handles.img;if isrgb(a)%對灰度和彩色圖像分別處理 for k=1:3 y(:,:,k)=flipud(a(:,:,k));end else
y=flipud(a);end
imshow(y);handles.img=y;guidata(hObject,handles);
2)左右翻轉(zhuǎn) %左右翻轉(zhuǎn)
global T %左右鏡像 axes(handles.axes2);T=getimage;a=handles.img;if isrgb(a)%對灰度和彩色圖像分別處理
for k=1:3 y(:,:,k)=fliplr(a(:,:,k));%左右翻轉(zhuǎn) end else
y=fliplr(a);%左右翻轉(zhuǎn) end
imshow(y);handles.img=y;guidata(hObject,handles);
3)任意角度翻轉(zhuǎn) %任意角度翻轉(zhuǎn) global T axes(handles.axes2);T=getimage;prompt={'旋轉(zhuǎn)角度:'};defans={''};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});f=imrotate(handles.img,p1,'bilinear','crop');imshow(f);handles.img=f;guidata(hObject,handles);
4.13特效效果 1)底片效果
通過f=imcomplement(handles.img);實(shí)現(xiàn)圖像取反,形成底片效果。%底片效果 global T axes(handles.axes2);T=getimage;f=imcomplement(handles.img);%圖像取反 imshow(f);handles.img=f;guidata(hObject,handles);
2)運(yùn)動(dòng)模糊 %運(yùn)動(dòng)模糊 global T global S axes(handles.axes2);S=fspecial('motion',28,15);T=imfilter(handles.img,S,'circular','conv');imshow(T)handles.img=T;guidata(hObject,handles);24
3)浮雕效果
實(shí)現(xiàn)圖像浮雕效果的一般原理是,將圖像上每個(gè)像素點(diǎn)與其對角線的像素點(diǎn)形成差值,使相似顏色值淡化,不同顏色值突出,從而產(chǎn)生縱深感,達(dá)到浮雕的效果。%浮雕效果 global T axes(handles.axes2);T=getimage;a=handles.img;r=a(:,:,1);%提取紅色分量表示的圖像 g=a(:,:,2);%提取綠色分量表示的圖像 b=a(:,:,3);%提取藍(lán)色分量表示的圖像 m = size(a,1);n = size(a,2);for i=3:m-2 for j=3:n-2 rr(i,j)=0.25*r(i-1,j-1)+0.25*r(i-2,j-2)+0.25*r(i,j)+0.25*r(i+1,j+1)-1.0*r(i+2,j+2)+128;gg(i,j)=0.25*r(i-1,j-1)+0.25*g(i-2,j-2)+0.25*g(i,j)+0.25*g(i+1,j+1)-1.0*g(i+2,j+2)+128;bb(i,j)=0.25*b(i-1,j-1)+0.25*b(i-2,j-2)+0.25*b(i,j)+0.25*b(i+1,j+1)-1.0*b(i+2,j+2)+128;end end
A(:,:,1)=rr;A(:,:,2)=gg;A(:,:,3)=bb;axes(handles.axes2);imshow(A)
4)馬賽克
一般來說,圖片的每個(gè)一細(xì)節(jié)都是由一個(gè)小的像素塊組成的,如果將其無限放大,每個(gè)像素塊就會(huì)很明顯地表現(xiàn)出來,就是我們說的馬賽克。馬賽克算法很簡單,就是把一張圖片分割成若干個(gè)val * val像素的小區(qū)塊(可能在邊緣有零星的小塊,但不影響整體算法,val越大,馬賽克效果越明顯),每個(gè)小區(qū)塊的顏色都是相同的。而利用Matlab中的放大和縮小函數(shù)imresize,可以方便的實(shí)現(xiàn)圖像的馬賽克效果。具體方法為,首先將圖片縮小到原圖片大小的1/5,再將圖片放大五倍還原到原來的大小。由于圖片縮小后,部分像素值會(huì)丟失,再次放大時(shí)就會(huì)出現(xiàn)模糊現(xiàn)象,即為馬賽克。%馬賽克 pix_grp = 15;global T axes(handles.axes2);T=getimage;a=handles.img;height = size(a,1);width = size(a,2);mosaic = imresize(a,[floor(height/pix_grp)floor(width/pix_grp)]);%B = imresize(A, [numrows numcols])將圖像A放大,numrows和numcols分別指定目標(biāo)圖像的高度和寬度
mosaic = imresize(mosaic,[height width],'nearest');a=mosaic;imshow(a);
5)霧化效果
設(shè)想有一塊透明的玻璃,朝上面哈幾口氣,然后將玻璃放到一張圖片上,得到的圖像效果就是霧化效果。下面來分析原理從而推導(dǎo)出算法。
玻璃上面哈氣后,有很多小水滴小水汽之類的,形狀不規(guī)則,因此發(fā)生光折射,由于水滴的不規(guī)則性,發(fā)生折射也是不規(guī)則的,也就是折射光的折射角不確定,但是肯定有個(gè)范圍,假設(shè)有像素A(i,j),(i和j分別表示橫坐標(biāo)和縱坐標(biāo)),折射后一定幾率在A(i+d,j+d)處,(-k 對每個(gè)像素A(i,j)進(jìn)行處理,用其周圍一定范圍內(nèi)隨機(jī)點(diǎn)A(i+d,j+d),(-k rr(i,j)=r(di,dj);%將原像素點(diǎn)用隨機(jī)像素點(diǎn)代替 gg(i,j)=g(di,dj);bb(i,j)=b(di,dj); end end A(:,:,1)=rr;A(:,:,2)=gg;A(:,:,3)=bb;imshow(A) 6)倒影效果 對圖像的美化過程中,常常需要制作倒影效果,倒影效果可以更好的展現(xiàn)風(fēng)景圖片和建筑物圖片的立體效果,達(dá)到讓欣賞者賞心悅目的效果。對圖像進(jìn)行倒影處理的基本思路是:將原圖像A壓縮為原來大小的一半,壓縮后的圖像旋轉(zhuǎn)180度后做左右鏡像處理,即B(i,n-j+1)=A(i,j);然后將下半部分圖像進(jìn)行霧化處理,以得到更好的倒影效果,最后將上下兩部分圖像合成到一個(gè)三維數(shù)組中,使用imshow函數(shù)顯示出來就可以了 %倒影效果 global T axes(handles.axes2);T=getimage;a=handles.img;m=size(a,1);n=size(a,2);img_up=imresize(a,[floor(m*0.5),n]);%將原圖像壓縮為原來大小的一半 img_down=imrotate(a,180);%壓縮后的圖像旋轉(zhuǎn)180度 r=img_down(:,:,1);g=img_down(:,:,2);b=img_down(:,:,3);for i=1:m for j=1:n %下半部分圖像做左右鏡像 rr(i,n-j+1)=r(i,j);28 gg(i,n-j+1)=g(i,j);bb(i,n-j+1)=b(i,j);end end A(:,:,1)=rr;A(:,:,2)=gg;A(:,:,3)=bb;%A是鏡像以后的圖像 img_down=A;%倒影部分進(jìn)行霧化,實(shí)現(xiàn)更好的倒影效果 m1=size(img_down,1);n1=size(img_down,2);r1=img_down(:,:,1);g1=img_down(:,:,2);b1=img_down(:,:,3);for i=2:m1-10 for j=2:n1-10 k=rand(1)*10;di=i+round(mod(k,33));dj=j+round(mod(k,33));rr1(i,j)=r1(di,dj);gg1(i,j)=g1(di,dj);bb1(i,j)=b1(di,dj);end end A1(:,:,1)=rr1;A1(:,:,2)=gg1;A1(:,:,3)=bb1;%霧化完成 img_down=imresize(A1,[floor(m*0.5),n]);A=[img_up;img_down];imshow(A)29 7)閾值分割 一幅圖像包括目標(biāo),背景和噪聲,怎樣從灰度圖像中取出對象物?灰度閾值法就是把圖像的灰度分成不同的等級,然后用設(shè)置灰度閾值的方法確定有意義的區(qū)域或欲分割物體的邊界。設(shè)定某一閾值T,對圖像進(jìn)行二值化處理。%閾值分割 global T axes(handles.axes2);T=getimage;a=handles.img;a=double(a(:,:,1));fxy=zeros(1,256);[m,n]=size(a);for i=1:m %統(tǒng)計(jì)每個(gè)灰度值的個(gè)數(shù) for j=1:n c=a(i,j);fxy(c+1)=fxy(c+1)+1;end end figure(1);plot(fxy);p1={'Input Num:'};p2={'180'};p3=inputdlg(p1,'Input Num:1~256',1,p2);p=str2num(p3{1});for i=1:m %小于閾值的為黑,大于閾值的為白 for j=1:n if a(i,j) image1(i,j)=1; end end end imshow(image1); 如果處理目標(biāo)或背景內(nèi)部相鄰見得灰度值是高度相關(guān)的,但處于目標(biāo)和背景交界處兩邊的像素在灰度值上有很大的差別,則它的灰度直方圖基本可以看做是分別對應(yīng)目標(biāo)和背景的兩個(gè)單峰直方圖混合成,如上圖。我們選取波谷作為閾值分割點(diǎn),就可以將目標(biāo)和背景分離開了,將目標(biāo)顯示出來。如下圖: 閾值分割在交通系統(tǒng)中的車牌識(shí)別中扮演著重要的角色,由于車牌的材料有反光的性能,當(dāng)抓拍到車牌后,對圖像進(jìn)行閾值分割可以得到不錯(cuò)的效果。如下圖,對一幅添加了高斯噪聲的車牌進(jìn)行閾值分割: 通過對灰度直方圖的統(tǒng),可以看到大致的兩個(gè)波峰,取其波谷為分割點(diǎn),灰度值大概在190左右,大于190的為白,小于190的為黑。 8)添加水印 為了給自己處理過的圖像添加標(biāo)志,設(shè)計(jì)了添加水印的功能。該功能的主要思想是,圖像即為數(shù)組,如果要再圖像上添加水印,也就是用另一幅圖像的數(shù)據(jù)去覆蓋原圖像對應(yīng)部分的數(shù)據(jù),也就是對數(shù)組內(nèi)容的替換。然后就是關(guān)于水印添加的方位了,由于添加方位的不同,所要替代的范圍的不同了。%添加水印 global T axes(handles.axes2);T=getimage;a=handles.img;[filename,pathname]=...uigetfile({'*.jpg';'*.bmp';'*.gif'},'watermark');str=[pathname filename];b=imread(str);m1=size(a,2);n1=size(a,1);m2=size(b,2);n2=size(b,1);c=a((n1-n2+1):n1,(m1-m2+1):m1,:);p1={'Input Num:'};p2={'2'}; p3=inputdlg(p1,'Input Num:1~4',1,p2);p=str2num(p3{1});if isrgb(a)&isrgb(b)switch p case 1 a(1:n2,1:m2,:)=b;%左上角 case 2 a(1:n2,(m1-m2+1):m1,:)=b;%右上角 case 3 a((n1-n2+1):n1,1:m2,:)=b;%左下角 case 4 b=imadd(imadd(c,b),-50);a((n1-n2+1):n1,(m1-m2+1):m1,:)=b;%右下角 otherwise msgbox('error,');end imshow(a);elseif isgray(a)&isgray(b)switch p case 1 a(1:n2,1:m2)=b;%左上角 case 2 a(1:n2,(m1-m2+1):m1)=b;%右上角 case 3 a((n1-n2+1):n1,1:m2)=b;%左下角 case 4 a((n1-n2+1):n1,(m1-m2+1):m1)=b;%右下角 otherwise msgbox('error');end imshow(a);else msgbox('error,the type of two pictures is mismatching');end 5、結(jié)果分析 在剛開始學(xué)習(xí)GUI時(shí),是按著視頻教程一步一步的學(xué)習(xí)的,由于視頻介紹的比較簡單,很多相應(yīng)功能都不知道相應(yīng)的回調(diào)函數(shù)該怎么寫,后來就借了本圖像處理matlab版本的書籍以及上網(wǎng)查了一些資料,之后的設(shè)計(jì)之路就輕松多了,特別是借助于功能強(qiáng)大的help,相應(yīng)的一些小問題基本都可以自己找出并解決。 因?yàn)樽x入圖像得到的是個(gè)矩陣,所以說對圖像處理也就是對矩陣做相應(yīng)的修改變換,在矩陣運(yùn)算過程中遇到了幾個(gè)很典型的問題。 1)有些函數(shù)只能對灰度圖像進(jìn)行操作例如左右翻轉(zhuǎn)函數(shù),所以當(dāng)圖像時(shí)彩色圖像時(shí)就要執(zhí)行for k=1:3 y(:,:,k)=fliplr(a(:,:,k));%左右翻轉(zhuǎn) end 操作 2)在實(shí)現(xiàn)圖像放大,縮小,亮度調(diào)整等功能時(shí),為了方便修改,設(shè)置對話框輸入,但從對話框輸入的數(shù)其實(shí)是字符,并不是真正的整型數(shù)值,所以如果沒有對字符轉(zhuǎn)數(shù)值變化,就會(huì)得到錯(cuò)誤的結(jié)果,舉個(gè)簡單的例子: a=’2’;b=2;a*b ans = 100 得到的100并不是我們所想要的4,之所以還會(huì)出結(jié)果是因?yàn)椋址?對應(yīng)的ASCII碼值為50,而matlab有支持這種算法,所以會(huì)得到100的結(jié)果。 正確的做法應(yīng)該是這樣: a=’2’;a=str2num(s);b=2;a*b ans = 4 所以說我們在對數(shù)據(jù)做處理的時(shí)候,一定要分清出它的類型,以免到時(shí)候查不出錯(cuò)誤。 3)關(guān)于全局變量的設(shè)置,打開了一張圖片,為了能供每個(gè)功能做相應(yīng)的處理,就得把圖片矩陣的屬性設(shè)置為global T,這樣做以后卻只能實(shí)現(xiàn)對源圖像做處理,如果要對處理過后的圖像再做處理,我們就要把處理完后的新圖像矩陣賦給源圖像,T=y,這樣就可以實(shí)現(xiàn)每次處理的對象都為上次處理完的圖像了。 4)??? Error using ==> * Function '*' is not defined for values of class 'uint8'.對于不同的圖像類型,圖像矩陣元素的類型也不一樣。對于真彩色圖像,數(shù)據(jù)矩陣類型是uint8;對于索引圖像,數(shù)據(jù)矩陣類型可以是double型或者uint8型;對于灰度圖像,數(shù)據(jù)矩陣類型可以是double型或者uint8型;對于二值圖像,數(shù)據(jù)矩陣類型可以是double型或者uint8型。當(dāng)類型不支持時(shí),我們可以通過強(qiáng)制類型轉(zhuǎn)換來得到所需數(shù)據(jù)類型,如:double(m).6、心得體會(huì) 通過這次“基于matlab的數(shù)字圖像處理”的GUI課程設(shè)計(jì),學(xué)到了很多很多,最基本的就是重新熟悉了matlab語言,不僅僅只是在matlab編程上面有所提高和對GUI的熟悉,對數(shù)字圖像處理也有了更深刻的認(rèn)識(shí)。 當(dāng)我第一次拿到此次的課題時(shí),感到有些無所適從。雖然,曾經(jīng)學(xué)習(xí)過matlab的課程,在課程的考核中也取得了較好的成績,但由于對matlab的學(xué)習(xí)更多的只是停留在理論上的學(xué)習(xí),在課時(shí)內(nèi)的試驗(yàn)也只是簡單的基礎(chǔ)性試驗(yàn),所以對matlab實(shí)際運(yùn)用不是很熟練。 為此,在實(shí)踐正式開始前,我利用課余時(shí)間,重新復(fù)習(xí)了matlab教材,專門借閱了利用matlab進(jìn)行圖像處理的相關(guān)教程,通過索引網(wǎng)絡(luò)上的相關(guān)資料,為課設(shè)做了較為充分的準(zhǔn)備。在參考了相關(guān)材料及源程序,我對自己要做的課設(shè)內(nèi)容有了進(jìn)一步的了解,并對matlab的使用有了更深的體會(huì)。 首先,明白了圖像對于matlab而言就是矩陣,灰度圖像和彩色圖像對應(yīng)于不同維數(shù)的矩陣,分別為二維和三維,其中三維矩陣每一位代表一種顏色。矩陣可以使實(shí)數(shù),也可以使復(fù)數(shù),不同的圖像矩陣的元素對應(yīng)于不同的類型,有double,uint8,uint16,logic等類型。由于幾乎所有的matlab函數(shù)及其工具箱函數(shù)都可以使用double作為參數(shù)類型,不過由于64bit來表示圖像數(shù)據(jù)存儲(chǔ)量特別巨大,所以matlab還支持圖像數(shù)據(jù)的無符號(hào)整型存儲(chǔ),所以使用時(shí)還要注意輸出數(shù)據(jù)類型的轉(zhuǎn)換。 其次,學(xué)會(huì)了要善于使用matlab中現(xiàn)有的函數(shù)。 最后,我們必須要明白理論指導(dǎo)實(shí)踐,要想實(shí)現(xiàn)預(yù)期的效果,必須明白它實(shí)現(xiàn)的機(jī)制和相應(yīng)的算法,只有通過相應(yīng)的理論來指導(dǎo),我們才能有所創(chuàng)新,才能有所突破,而不只是單純的引用相應(yīng)的處理函數(shù)。例如對于截圖函數(shù),它只能是截取坐標(biāo)軸內(nèi)的圖像,對坐標(biāo)軸意外的圖像卻不能處理,而且對于同時(shí)顯示在坐標(biāo)軸上的幾張圖像,它只能處理最后顯示的那張,如果我們通過對它改進(jìn),能實(shí)現(xiàn)像qq截圖那樣的功能就很強(qiáng)大了。不過通過這次的實(shí)現(xiàn),我對圖像的模式,彩色空間,存儲(chǔ)結(jié)構(gòu),圖像的傅里葉變換,離散余弦變換的原理,圖像的平滑和銳化的算子,直方圖的用途和直方圖均衡化原理,圖像的偽彩色和真彩色增強(qiáng),以及閾值分割原理都有了更清楚的認(rèn)識(shí),也明白了它們的實(shí)現(xiàn)機(jī)制。還有就是,如今的GUI只能在matlab環(huán)境下運(yùn)行,如果能轉(zhuǎn)化成exe 格式,就能獨(dú)立于matlab外執(zhí)行了,還有很多很多新功能等待我們?nèi)ヌ剿鳌?傮w來說,此次的課程設(shè)計(jì),還是較為滿意的。它不但鞭策著我去鞏固matlab的基礎(chǔ)理論知識(shí),還提高了我對matlab的實(shí)際操作運(yùn)用,使得理論與實(shí)踐相結(jié)合,為進(jìn)一步學(xué)習(xí)matlab打下堅(jiān)實(shí)的基礎(chǔ);同時(shí),在實(shí)踐的工程中,也讓我體會(huì)到一種努力付出并得到回報(bào)的滿足感覺。 參考書目: [1]《MATLAB實(shí)用教程》 [2] 《數(shù)字圖像處理與分析》 鄭阿奇 電子工業(yè)出版社 張弘.機(jī)械工業(yè)出版社 36 附錄: function varargout = untitled1(varargin)% UNTITLED1 M-file for untitled1.fig % UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing % singleton*.% % H = UNTITLED1 returns the handle to a new UNTITLED1 or the handle to % the existing singleton*.% % UNTITLED1('CALLBACK',hObject,eventData,handles,...)calls the local % function named CALLBACK in UNTITLED1.M with the given input arguments.% % UNTITLED1('Property','Value',...)creates a new UNTITLED1 or raises the % existing singleton*.Starting from the left, property value pairs are % applied to the GUI before untitled1_OpeningFcn gets called.An % unrecognized property name or invalid value makes property application % stop.All inputs are passed to untitled1_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 % Edit the above text to modify the response to help untitled1 % Last Modified by GUIDE v2.5 22-Jun-2012 19:36:46 % Begin initialization codeDO NOT EDIT %---Executes just before untitled1 is made visible.function untitled1_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 Untitled_2_Callback(hObject, eventdata, handles)% hObject handle to Untitled_2(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%保存圖像 [sfilename ,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存圖像文件','untitled.jpg');if ~isequal([sfilename,sfilepath],[0,0]) sfilefullname=[sfilepath ,sfilename]; imwrite(handles.img,sfilefullname);else msgbox('你按了取消鍵','保存失敗');end %------ function Untitled_4_Callback(hObject, eventdata, handles)% hObject handle to Untitled_4(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA) %亮度調(diào)節(jié) axes(handles.axes2);prompt={'調(diào)整倍數(shù)'};defans={''};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});y=imadjust(handles.img,[ ], [ ],p1);% 亮度調(diào)節(jié) imshow(y); handles.img=y; guidata(hObject,handles); % ------ function Untitled_9_Callback(hObject, eventdata, handles) % hObject handle to Untitled_9(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%灰度變換 global T axes(handles.axes2); T=getimage;if isrgb(s)%對灰度圖像和彩色圖像分x=rgb2gray(handles.img);%灰度變換 別處理 imshow(x);a=histeq(s(:,:,1));%對每一種基色直handles.img=x;方圖均衡 guidata(hObject,handles);b=histeq(s(:,:,2));c=histeq(s(:,:,3));k(:,:,1)=a;% k(:,:,2)=b;------k(:,:,3)=c;imshow(k);function Untitled_15_Callback(hObject, else eventdata, handles)y=histeq(s);%對灰度圖像直方圖均衡 % hObject handle to Untitled_15(see imshow(y);GCBO)handles.img=y;% eventdata reservedto be defined in guidata(hObject,handles);a future version of MATLAB % handles structure with handles and user data(see GUIDATA)% global T------axes(handles.axes2);T=getimage;function Untitled_17_Callback(hObject, s=handles.img;eventdata, handles)if isrgb(s)%對灰度圖像和彩色圖像分別% hObject handle to Untitled_17(see 處理 GCBO)for k=1:3 % eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%高斯噪聲 axes(handles.axes2);y=imnoise(handles.img,'gaussian',0,0.05);%加高斯噪聲 imshow(y);handles.img=y;guidata(hObject,handles);%------ function Untitled_22_Callback(hObject, eventdata, handles)% hObject handle to Untitled_22(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%斑點(diǎn)噪聲 axes(handles.axes2); y=imnoise(handles.img,'speckle',0.04);%加斑點(diǎn)噪聲 imshow(y); handles.img=y; guidata(hObject,handles); % ------ function Untitled_24_Callback(hObject, eventdata, handles)% hObject handle to Untitled_24(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%高通濾波 axes(handles.axes2);x=(handles.img);f=double(x);% 數(shù)據(jù)類型轉(zhuǎn)換 k=fft2(f);% 傅里葉變換 g=fftshift(k);% 轉(zhuǎn)換數(shù)據(jù)矩陣 [M,N]=size(g);nn=2;d0=5;%截止頻率5 m=fix(M/2);n=fix(N/2);for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2);% 計(jì)算高通濾波器傳遞函數(shù) if d<=d0 h=0;else h=1;end result(i,j)=h*g(i,j);end end result=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));imshow(y3);handles.img=y3;guidata(hObject,handles);% 顯示濾波處理后的圖像 %------ function Untitled_28_Callback(hObject, eventdata, handles)% hObject handle to Untitled_28(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%上下翻轉(zhuǎn) global T axes(handles.axes2);T=getimage;a=handles.img; if isrgb(a)%對灰度和彩色圖像分別處理 for k=1:3 y(:,:,k)=flipud(a(:,:,k));%上下翻轉(zhuǎn) end else y=flipud(a);%上下翻轉(zhuǎn) end imshow(y); handles.img=y; guidata(hObject,handles); %------ function Untitled_44_Callback(hObject, eventdata, handles)% hObject handle to Untitled_44(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%偽彩色增強(qiáng) global T axes(handles.axes2);T=getimage;a=handles.img; c=zeros(size(a));%a為原灰度圖像矩陣 pos=find(a<100);%找到灰度值小于100的 c(pos)=a(pos); b(:,:,3)=c;%變?yōu)樗{(lán)色 c=zeros(size(a));%a為原灰度圖像矩陣 pos=find((a>=100)&(a<230));%找到灰度值大于100小于230的 c(pos)=a(pos); b(:,:,2)=c;%變?yōu)榫G色 c=zeros(size(a));%a為原灰度圖像矩陣 pos=find(a>=230);%找到灰度值大于230的c(pos)=a(pos); b(:,:,1)=c;%變?yōu)榧t色 b=uint8(b); axes(handles.axes2);imshow(b); handles.img=b; guidata(hObject,handles);% ------ function Untitled_40_Callback(hObject, eventdata, handles)% hObject handle to Untitled_40(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA) %------ function Untitled_35_Callback(hObject, eventdata, handles)% hObject handle to Untitled_35(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%離散余弦變換 global T axes(handles.axes2);T=getimage;a=handles.img;gray=rgb2gray(a); d=dct2(gray);%對圖像進(jìn)二維行離散余弦變換 imshow(log(abs(d)),[]);%使用對數(shù)使低頻部分顯示效果更明顯 % ------ function Untitled_45_Callback(hObject, eventdata, handles)% hObject handle to Untitled_45(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%雙線性插值法放大 global T axes(handles.axes2);T=getimage;prompt={'輸入放大倍數(shù):'};defans={''};p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans);p1=str2num(p{1});y=imresize(handles.img,p1,'bilinear');%雙線性插值法放大 imshow(y);handles.img=y;guidata(hObject,handles); %------ function Untitled_47_Callback(hObject, eventdata, handles)% hObject handle to Untitled_47(see GCBO) % eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%雙線性插值法縮小 global T axes(handles.axes2);T=getimage; prompt={'輸入放大倍數(shù):'};defans={''}; p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans); p1=str2num(p{1}); y=imresize(handles.img,p1,'bilinear');%雙線性插值法縮小 imshow(y); handles.img=y;guidata(hObject,handles); %------ function Untitled_50_Callback(hObject, eventdata, handles)% hObject handle to Untitled_50(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%撤銷 axes(handles.axes2);global T imshow(T);handles.img=T;guidata(hObject,handles); % ------ function Untitled_54_Callback(hObject, eventdata, handles)% hObject handle to Untitled_54(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA) [sfilename ,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存圖像文件','untitled.jpg');if ~isequal([sfilename,sfilepath],[0,0]) sfilefullname=[sfilepath ,sfilename]; imwrite(handles.img,sfilefullname);else msgbox('你按了取消鍵','保存失敗');end %------function uipushtool5_ClickedCallback(hObject, eventdata, handles)% hObject handle to uipushtool5(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)axes(handles.axes2);p1=str2num('5'); y=imresize(handles.img,p1,'nearest');%最近鄰插值法放大 imshow(y); handles.img=y; guidata(hObject,handles); %---Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)axes(handles.axes2);p1=str2num('0.2');y=imresize(handles.img,p1,'nearest');%最近鄰插值法放大 imshow(y);handles.img=y;guidata(hObject,handles); %------function uitoggletool1_ClickedCallback(hObject, eventdata, handles)% hObject handle to uitoggletool1(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA) global S axes(handles.axes2);%還原 y=imread(S);f=imshow(y);handles.img=y; guidata(hObject,handles);% ------ function Untitled_57_Callback(hObject, eventdata, handles)% hObject handle to Untitled_57(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%Radon變換 global T axes(handles.axes2);theta=0:1:180;%對每個(gè)角度做radon變換處理 [r,xp]=radon(T,theta);%Radon變換 imagesc(theta,xp,r);xlabel('degrees');%為x軸做標(biāo)注 colorbar;%顯示顏色條 %------ function Untitled_59_Callback(hObject, eventdata, handles)% hObject handle to Untitled_59(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%還原 global S axes(handles.axes2);y=imread(S);f=imshow(y);handles.img=y; guidata(hObject,handles); %---Executes during object creation, after setting all properties.function figure1_CreateFcn(hObject, eventdata, handles) % hObject handle to figure1(see GCBO)% eventdata reservedhandles not created until after all CreateFcns called %---Executes during object creation, after setting all properties.%添加背景圖片 im=axes('units','normalized','position',[0 0 1 1]); uistack(im,'down');II=imread('9.jpg');image(II); colormap gray; set(im,'handlevisibility','off','visible',off); ------%------function Untitled_62_Callback(hObject, eventdata, handles)function Untitled_61_Callback(hObject, % hObject handle to Untitled_62(see eventdata, handles)GCBO)% hObject handle to Untitled_61(see % eventdata reservedto be defined in % handles structure with handles and a future version of MATLAB user data(see GUIDATA)% handles structure with handles and %馬賽克 user data(see GUIDATA).pix_grp = 15;%浮雕效果 global T global T axes(handles.axes2);axes(handles.axes2);T=getimage;T=getimage;a=handles.img;a=handles.img;height = size(a,1);r=a(:,:,1);%提取紅色分量表示的圖像 width = size(a,2);g=a(:,:,2);%提取綠色分量表示的圖像 mosaic = b=a(:,:,3);%提取藍(lán)色分量表示的圖像 imresize(a,[floor(height/pix_grp)m = size(a,1);floor(width/pix_grp)]);n = size(a,2);%B = imresize(A, [numrows numcols])將for i=3:m-2 圖像A放大,numrows和numcols分別指定目for j=3:n-2 標(biāo)圖像的高度和寬度 rr(i,j)=0.25*r(i-1,j-1)+0.25*r(i-2,j-mosaic = imresize(mosaic,[height 2)+0.25*r(i,j)+0.25*r(i+1,j+1)-1.0*r(width],'nearest');i+2,j+2)+128;a=mosaic;gg(i,j)=0.25*r(i-1,j-1)+0.25*g(i-2,j-imshow(a);2)+0.25*g(i,j)+0.25*g(i+1,j+1)-1.0*g(i+2,j+2)+128;bb(i,j)=0.25*b(i-1,j-1)+0.25*b(i-2,j-% 2)+0.25*b(i,j)+0.25*b(i+1,j+1)-1.0*b(------i+2,j+2)+128;end function Untitled_63_Callback(hObject, end eventdata, handles)A(:,:,1)=rr;% hObject handle to Untitled_63(see A(:,:,2)=gg;GCBO)A(:,:,3)=bb;% eventdata reserved-to be defined in axes(handles.axes2);a future version of MATLAB imshow(A)% handles structure with handles and user data(see GUIDATA) %霧化效果 global T % axes(handles.axes2); MATLAB基礎(chǔ)上機(jī)指導(dǎo)書 實(shí)驗(yàn)?zāi)康?/p> MATLAB基礎(chǔ)上機(jī)實(shí)驗(yàn)的目的主要是在深入理解和掌握課程中的基本概念和原理的基礎(chǔ)上培養(yǎng)學(xué)習(xí)者用計(jì)算機(jī)解決實(shí)際問題的意識(shí),訓(xùn)練和提高學(xué)生分析問題、仿真、程序設(shè)計(jì)和程序調(diào)試能力。實(shí)驗(yàn)要求 1.整個(gè)學(xué)期的上機(jī)實(shí)踐共有4個(gè)。從實(shí)驗(yàn)一的MATLAB的上機(jī)基本操作,到實(shí)驗(yàn)四的GUI設(shè)計(jì),都本著由淺入深、由易到難、逐步深入的原則,給出了不同的上機(jī)程序。一般每個(gè)實(shí)驗(yàn)中有約5-7個(gè)不同難度的程序,按班級序號(hào)排列組合分組,每組學(xué)生包括5人,按組檢查程序。 2.每次實(shí)驗(yàn)后要求學(xué)生提交上機(jī)報(bào)告,這也是整個(gè)實(shí)驗(yàn)過程的一個(gè)重要環(huán)節(jié)。實(shí)驗(yàn)結(jié)束后,要整理實(shí)驗(yàn)結(jié)果并認(rèn)真分析和總結(jié),根據(jù)教師要求寫出實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)報(bào)告一般包括如下內(nèi)容: ⑴ 實(shí)驗(yàn)內(nèi)容:實(shí)驗(yàn)題目與要求。⑵ 程序清單 (3)運(yùn)行結(jié)果:原始數(shù)據(jù)、相應(yīng)的運(yùn)行結(jié)果和必要的說明。 (4)分析與思考:調(diào)試過程及調(diào)試中遇到的問題及解決辦法;調(diào)試程序的心得與體會(huì);其他函數(shù)算法的存在與實(shí)踐等。若最終未完成調(diào)試,要認(rèn)真找出錯(cuò)誤并分析原因等。常用命令參考 本節(jié)就一些常用的MATLAB命令進(jìn)行介紹,使初學(xué)者盡快提高M(jìn)ATLAB上機(jī)調(diào)試程序的能力。 1、學(xué)會(huì)用help和doc函數(shù)。 2、輸入輸出文件:save/load 3、解線性方程組AX=B:X=AB 4、作圖時(shí)兩張曲線合并:hold on或者subplot作子圖 5、程序計(jì)算時(shí)間:tic,toc或者clock 6、變量顯示方式更改:format long/short/bank...7、數(shù)組元素求和:sum 8、求數(shù)組長度:length 求矩陣維數(shù):size或者ndims 矩陣元素個(gè)數(shù):numel 9、函數(shù)作圖: 餅圖:pie/pie3 誤差圖:errorbar 散點(diǎn)圖:scatter/scatter3 直方圖:hist 函數(shù)圖:fplot 動(dòng)畫:movie 10、矩陣分析: 左右翻轉(zhuǎn):fliplr 上下翻轉(zhuǎn):flipud 轉(zhuǎn)置:transpose 矩陣求逆:inv 矩陣范數(shù):norm 條件數(shù):cond 初等變換:rref 特征值:eig/eigs 11、特殊矩陣: 元素全為1的矩陣:ones 元素全為0的矩陣:zeros 單位陣:eye 魔方陣:magic 線性變化數(shù)組:linspace 聚合矩陣:cat/horzcat/vertcat 12、隨機(jī)數(shù): 創(chuàng)建一個(gè)元素服從均勻分布的隨機(jī)數(shù)數(shù)組:rand 創(chuàng)建一個(gè)元素服從正態(tài)分布的隨機(jī)數(shù)數(shù)組:randn 二項(xiàng)分布:binornd 指數(shù)分布:exprnd F分布:frnd 幾何分布:geornd 超幾何分布:hygernd 泊松分布:poissrnd 正態(tài)分布:normrnd 離散均勻分布:unidrnd 連續(xù)均勻分布:unifrnd 13、清屏:clc 清理內(nèi)存:clear 14、字體顯示變更等:preferences 15、得到一個(gè)文件夾的所有文件名:ls 16、語句太長的話可以再句末加...換行。 實(shí)驗(yàn)一 MATLAB快速入門操作 [實(shí)驗(yàn)?zāi)康腯 1. 熟悉MATLAB的工作環(huán)境。2. 熟悉MATLAB的幫助系統(tǒng)。3. 掌握基本的運(yùn)算表達(dá)。4. 掌握基本的數(shù)學(xué)函數(shù)。5. 掌握基本的字符串使用。[實(shí)驗(yàn)內(nèi)容] 1.執(zhí)行MATLAB的啟動(dòng)和退出。觀看DEMO程序,INTRO程序,HELP文件,練習(xí)MATLAB常用命令在命令窗口中計(jì)算數(shù)學(xué)表達(dá)式,輸入簡單矩陣,查看工作空間中的變量,命令窗口顯示清除,語句、變量及數(shù)據(jù)的表示,搜索路徑設(shè)置。 2.使用函數(shù)創(chuàng)建字符串?dāng)?shù)組,掌握char、strvcat、strcat之間的區(qū)別。>> c1=char('china','india');>> c3=strvcat('china','india');>> c4=strcat('china','india');char中各部分互相獨(dú)立,strvact豎直連接 strcat直接連接 >> c1=char('china','india') c1 = china india >> c3=strvcat('china','india') c3 = china india >> c4=strcat('china','india') c4 = chinaindia 也就是說strcat連接兩個(gè)字符串,而strvcat垂直連接兩個(gè)字符串.? i6c?2e3.設(shè)三個(gè)復(fù)數(shù)a=3+4i,b=1+2i,計(jì)算x=ab/c,注意復(fù)數(shù)的表達(dá)方式。 >> a=3+4i,b=1+2i,c=2*exp(pi/6*i)a = 3.0000 + 4.0000i b = 1.0000 + 2.0000i c = 1.7321 + 1.0000i >> X=a*b/c X = 0.3349 + 5.5801i sin?x??354.計(jì)算下式的結(jié)果,其中x=45°,572 注意函數(shù)參數(shù)的使用類型,掌握復(fù)雜表達(dá)式的計(jì)算。>> a=45/180*pi a = 0.7854 >> b=(sin(a)+35^(1/2))/72^(1/5)b = 2.8158 5.計(jì)算星球之間的萬有引力。包括地球和太陽,地球和月亮之間的距離。具體參數(shù)太陽質(zhì)量1.989×10^30千克,地球質(zhì)量5.976×10^27千克,太陽和地球的距離***0米,月亮質(zhì)量7.351×10^ 22千克,月亮和地球兩者間距384400000米,萬有引力系數(shù)K 6.67×10^-11,見P26 例2-3。 >> M1=1.989e30,M2=5.976e27,M3=7.351e22,d1=1.4960e11,d2=3.844e8 K=6.67e-11 M1 = 1.9890e+030 M2 = 5.9760e+027 M3 = 7.3510e+022 d1 = 1.4960e+011 d2 = 384400000 K = 6.6700e-011 >> F12=M1*M2*K/d1^2 F12 = 3.5426e+025 >> F23=M2*M3*K/d2^2 F23 = 1.9830e+023 ?333??,以及數(shù)據(jù)的修改方法,盡量考2336.用兩種方法創(chuàng)建一個(gè)二維數(shù)組?????433??慮計(jì)算效率。在掌握二維數(shù)組基礎(chǔ)上掌握三維數(shù)組的創(chuàng)建方法。 創(chuàng)建:方法1;x=[3,3,3;2,3,3;4,3,3] x = 3 3 2 3 3 4 3 3 方法2 在workspace中點(diǎn)擊 new variable 就會(huì)在下面出現(xiàn)一個(gè)新變量unnamed 雙擊unnamed變量引出一個(gè)空白頁面,在里面進(jìn)行編輯 >> unnamed unnamed = 3 3 2 3 3 4 3 3 修改 直接在workspace中點(diǎn)擊需要修改的變量,在相應(yīng)位置修改變量,保存后在命令窗口重新調(diào)用函數(shù) 計(jì)算 [問題討論] 1.小結(jié)上機(jī)各個(gè)環(huán)節(jié)所出現(xiàn)的錯(cuò)誤及解決的辦法。 [思考問題] 1.仿真是否“真實(shí)”,與什么因素有關(guān)? 仿真是在數(shù)字計(jì)算機(jī)上進(jìn)行試驗(yàn)的數(shù)字化技術(shù),包括數(shù)字和邏輯模型的某些模式,這些模型描述了某一事件或經(jīng)濟(jì)系統(tǒng)在若干周期內(nèi)的特征。仿真常常包括模型建立,仿真模型的建立和仿真試驗(yàn)三個(gè)方面。從以上可以看出,仿真其實(shí)是建立在模型之上,通過計(jì)算機(jī)或者其他載體,并借助經(jīng)驗(yàn)知識(shí)、統(tǒng)計(jì)數(shù)據(jù)和信息資料等對真實(shí)或假想的系統(tǒng)進(jìn)行試驗(yàn),得出試驗(yàn)結(jié)果的過程。 在這點(diǎn)上看,仿真并不真實(shí),因?yàn)樗⒉荒?00%模擬出真實(shí)情況,而實(shí)際上“真實(shí)”的復(fù)雜多變也難以模擬。但是,仿真可以通過以上的手段在一定范圍內(nèi)對真實(shí)進(jìn)行模擬和預(yù)測。其與真實(shí)結(jié)果的相關(guān)性,或者說仿真方法的優(yōu)劣性與其系統(tǒng)、模型和載體是密切相關(guān)的。第五篇:北航matlab上機(jī)實(shí)驗(yàn)報(bào)告