第一篇:MATLAB第一章作業(yè)答案
第一章
MATLAB概況與基本操作
1.選擇題(每題2分,共20分):
(1)最初的MATLAB核心程序是采用D語言編寫的。A.PASCAL B.C C.BASIC D.FORTRAN(2)即將于2011年9月發(fā)布的MATLAB新版本的編號為C。
A.MATLAB 2011Ra B.MATLAB 2011Rb C.MATLAB R2011b D.MATLAB R2011a(3)在默認(rèn)設(shè)置中,MATLAB中的注釋語句顯示的顏色是B。A.黑色 B.綠色 C.紅色 D.藍(lán)色
(4)如果要以科學(xué)計數(shù)法顯示15位有效數(shù)字,使用的命令是A。
A.format long e B.format long C.format long g D.format long d(5)在命令窗口新建變量a、b,如果只查看變量a的詳細(xì)信息,使用的命令為A。A.whos a B.who a C.who D.whos(6)如果要清除工作空間的所有變量,使用的命令為C。A.clear B.clear all C.兩者都可 D.兩者都不可
(7)在創(chuàng)建變量時,如果不想立即在命令窗口中輸出結(jié)果,可以在命令后加上B。A.冒號 B.分號 C.空格 D.逗號
(8)如果要重新執(zhí)行以前輸入的命令,可以使用D鍵。
A.下箭頭↓ B.右箭頭→ C.左箭頭← D.上箭頭↑
(9)如果要查詢函數(shù)det的功能和用法,并顯示在命令窗口,應(yīng)使用命令C。A.doc B.lookfor C.help D.三者均可
(10)如果要啟動Notebook文檔,下列D操作是可行的。A.在命令窗口輸入notebook命令
B.在命令窗口輸入notebook filename命令 C.在Word中啟動M-book文檔 D.三者均可
2.填空題(每空1分,共20分):
(1)MATLAB是matrix和laboratory兩個單詞前三個字母的組合,意為“矩陣實驗室”,它的創(chuàng)始人是Cleve Moler和Jack Little。
(2)在MATLAB的默認(rèn)設(shè)置中,關(guān)鍵字顯示的字體為藍(lán)色,命令、表達(dá)式、計算結(jié)果顯示的字體為黑色,字符串顯示的字體為褐紅色,注釋顯示的字體為綠色,錯誤信息顯示的字體為紅色。
(3)在命令窗口中,輸出結(jié)果顯示為各行之間添加空行的命令為format loose,各行之間不添加空行的命令為format compact。
(4)在MATLAB中,各種標(biāo)點符號的作用是不同的。例如,空格的作用是分隔數(shù)組每行各個元素,逗號的作用是分隔數(shù)組每行各個元素或函數(shù)的各個輸入?yún)?shù),分號的作用是作為不顯示命令結(jié)果的命令行的結(jié)尾或分隔數(shù)組各列,冒號的作用是生成一維數(shù)組或表示數(shù)組全部元素,百分號的作用是引導(dǎo)一行注釋,?的作用是連接相鄰兩行,感嘆號的作用是調(diào)用操作系統(tǒng)命令。3.程序設(shè)計題(每題10分,共40分)
(1)以25m/s的初速度向正上方投球(g=9.8m/s2),計算到達(dá)最高點的時間tp以及球從出發(fā)點到最高點的距離hp。
解:根據(jù)物理學(xué)知識,物體上拋運動的速度與經(jīng)過的時間之間的關(guān)系為vp?v0?gtp,因此所需要的時間為tp?v0?vpg。而到達(dá)最高點時的速度vp?0,因此可根據(jù)此公式求出tp:
v0=25;g=9.8;vp=0;tp=(v0-vp)/g
tp = 2.5510 而到達(dá)最高點所走過的距離為hp?v0tp?12gtp,因此有 2hp=v0*tp-1/2*g*tp^2
hp = 31.8878
(2)假設(shè)建造一個半球形的圓屋頂,其外半徑為50英尺,固體混凝土墻的厚度為9英寸,計算出需要的水泥體積大小v。
解:首先將英寸轉(zhuǎn)換為英尺: ft=1;in=0.0833*ft;
屋頂?shù)捏w積為兩個半球體積之差: R=50;t=9*in;r=R-t;V=2*pi*(R^3-r^3)
V = 3.4802e+004
(3)一架噴氣式飛機以600英里的時速在距離水平面100英尺的高度飛行,如果地面陡然以4°的坡度升高,計算出多少時間(tx)之前為了避免飛機撞向地面飛行員就必須提升機頭? 解:首先應(yīng)該注意將英里轉(zhuǎn)換為英尺: ft=1;li=5280*ft
li = 5280
其次,要使飛機不撞向地面,那么飛機應(yīng)該在地面的高度小于100英尺之前就提升機頭,而飛機在達(dá)到該點時走過的距離應(yīng)該為 L=100*tand(4)
L = 6.9927
飛機的速度(以英尺/秒表示)v=li/3600
v = 1.4667
因此飛機需要的時間為 tx=L/v
tx = 4.7677
(4)一周的辛苦工作之后,Kirk開車到Helen,Georgia做一次漂流旅行(去消暑),他從家出發(fā)行駛200英里前往Timbuktu,然后向右轉(zhuǎn),向東行駛400英里到達(dá)Helen。編寫一腳本計算Kirk家到Helen的直線距離d的大小。
解:建立直角坐標(biāo)系,以Kirk家為坐標(biāo)原點,向北為+y方向,向東為+x方向,則Helen的坐標(biāo)為 x=400;y=200;
因此Kirk家到Helen的直線距離為 d=sqrt(x^2+y^2)
d = 447.2136
4.實踐操作題(每題10分,共20分)(1)先建立自己的工作目錄,再將自己的工作目錄設(shè)置到MATLAB搜索路徑下。請寫出操作步驟或用Matlab命令實現(xiàn)。用help命令能查詢到自己的工作目錄嗎? 解:步驟如下:
1.先在硬盤上建立一個工作文件夾,如:c:mywork。
2.在matlab的文件菜單中選擇Set Path?菜單項,則打開一個對話框如圖1所示。
圖1 Set Path對話框
3.點擊Add Folder?按鈕,彈出一個新的對話框如圖2所示。
圖2 Add Folder to Path對話框
4.在該對話框中找到c:mywork文件夾(圖3),點擊確定按鈕,對話框關(guān)閉,回到圖1中的對話框,此時在該對話框中的MATLAB search path列表中出現(xiàn)了c:mywork文件夾(圖4)。
圖3 添加c:mywork文件夾
圖4 保存設(shè)置路徑
5.點擊Save按鈕,保存所設(shè)置的搜索路徑,然后點擊Close按鈕關(guān)閉對話框。注意,一定要先Save再Close,不然搜索路徑就沒有設(shè)置成功。
(2)利用MATLAB的幫助功能查詢inv函數(shù)的功能及用法,并將顯示的英文信息翻譯為中文。help inv
INV Matrix inverse.INV(X)is the inverse of the square matrix X.A warning message is printed if X is badly scaled or nearly singular.See also SLASH, PINV, COND, CONDEST, LSQNONNEG, LSCOV.Overloaded functions or methods(ones with the same name in other directories)help gf/inv.m help lti/inv.m help idmodel/inv.m help uss/inv.m help umat/inv.m help ufrd/inv.m help ndlft/inv.m help atom/inv.m help sym/inv.m
Reference page in Help browser doc inv 翻譯為英文: INV:矩陣求逆
INV(X)是方陣X的逆矩陣。
如果X是壞條件數(shù)的或者接近奇異的,則會在命令窗口打印一條警告信息。
也可參閱類似函數(shù)SLASH、PINV、COND、CONDEST、LSQNOONEG、LSCOV。重載函數(shù)或方法(其他文件夾中相同名稱的函數(shù)): gf/inv.m lti/inv.m idmodel/inv.m uss/inv.m umat/inv.m ufrd/inv.m ndlft/inv.m atom/inv.m sym/inv.m 幫助瀏覽器中的參考文獻頁 doc inv
第二篇:MATLAB作業(yè)
第一章 MATLAB R2010a簡介
主要內(nèi)容總結(jié)如下:
本章主要介紹了MATLAB的功能和它的用戶界面以及MATLAB R2010a的路徑搜索。MATLAB的功能是多種多樣的,有數(shù)學(xué)計算功能、圖形化顯示功能、M語言編程功能、編譯功能Simulink建模仿真功能,自動代碼生成功能,圖形用戶界面開發(fā)功能等一系列功。在介紹MATLAB R2010a用戶界面時,主要介紹了它的啟動方法,主菜單及其功能。學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí),我了解了MATLAB的基本功能,認(rèn)識了它的界面和啟動方法,以及主菜單功能,被他強大的計算功能和其他功能深深吸引,學(xué)會了MATLAB,將會為我以后學(xué)習(xí)其他方面的知識提供一種工具,使學(xué)習(xí)其他的東西更加的方便。我非常喜歡這門課,所以我一定會努力學(xué)好它的。
第二章 基本使用方法
主要內(nèi)容總結(jié)如下:
本章主要介紹了MATLAB中一些簡單的數(shù)學(xué)運算和常用的數(shù)學(xué)函數(shù)和數(shù)學(xué)運算符,標(biāo)點符號的使用,常用的操作命令和快捷鍵,整數(shù)、浮點數(shù)、復(fù)數(shù)、邏輯變量等數(shù)據(jù)類型和他們之間的轉(zhuǎn)換,數(shù)據(jù)類型操作函數(shù)和變量,MATLAB中的關(guān)系運算符邏輯運算符等運算符和它們的優(yōu)先級,以及一些基礎(chǔ)函數(shù),如位操作函數(shù)、邏輯運算函數(shù)、集合函數(shù)、時間與日期函數(shù)。本章還介紹了MATLAB中的腳本文件。
學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)我了解了MATLAB中的簡單數(shù)學(xué)運算符,一些操作命令和快捷鍵,MATLAB R2010a的數(shù)據(jù)類型和運算符,還有一些基礎(chǔ)函數(shù),腳本文件。我認(rèn)為這些東西是基本的東西,但是我又必須要學(xué)好它們,只有把這些基礎(chǔ)都掌握了,才能為以后的學(xué)習(xí)打下堅實的基礎(chǔ)。我認(rèn)為MATLAB中的許多函數(shù)我應(yīng)該熟練它的作用,做到看到函數(shù)要知道其作用。我在這一部分的學(xué)習(xí)中,腳本文件的編寫對我來說有一定的困難,我以后一定多加練習(xí),學(xué)好他們。
第三章 數(shù)組和向量
主要內(nèi)容總結(jié)如下:
本章主要介紹了數(shù)組和向量兩個大的方面。其中數(shù)組介紹了數(shù)組的創(chuàng)建,數(shù)組的操作(如獲取數(shù)組中的元素,從數(shù)組中移除元素,數(shù)組算術(shù)操作,數(shù)組邏輯運算數(shù)組連接,切片、重排和線性化數(shù)組),和一些實例應(yīng)用;向量部分介紹了向量的創(chuàng)建,尺寸,索引(包括數(shù)值索引、邏輯索引),縮短,向量操作(包括算術(shù)操作、邏輯操作、應(yīng)用庫函數(shù)、連接、切片)等知識。學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)我對數(shù)組和向量有了一個全新的認(rèn)識,這部分的學(xué)習(xí)有許多細(xì)節(jié)需要注意,如我們在從數(shù)組中移除元素時,元素必須整列整行的移除;行向量可以直接輸入,列向量輸入時中間需要用到分號;.*,./,和.^被分別用作逐個元素相乘,相除,及指數(shù)運算等等。還有一些函數(shù)如zeros,rand,diag,magic等都可以產(chǎn)生一些常用的數(shù)組,學(xué)習(xí)時應(yīng)該熟練掌握。向量的索引對我來說是比較難的知識,剛開始學(xué)的時候不太理解,不過后來經(jīng)過我反復(fù)的學(xué)習(xí)逐漸了解,這部分知識我還需要努力。向量和數(shù)組這部分知識在以后的幾章會經(jīng)常用到,并且和實際聯(lián)系的也比較緊密,所以我必須要學(xué)好他們。
第四章MATLAB 的數(shù)學(xué)運算 本章主要內(nèi)容總結(jié)如下:
本章主要介紹了多項式與差值,函數(shù)運算,微分方程三大模塊。其中多項式與插值主要介紹了多項式的四則運算,roots函數(shù),polyval函數(shù),polyder函數(shù),多項式擬合,以及數(shù)據(jù)插值;函數(shù)運算主要介紹了函數(shù)圖像的繪制,函數(shù)的極值,數(shù)值積分和含參數(shù)函數(shù)的使用;微分積分主要介紹了常微分初值問題和常微分方程邊值問題。
學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)掌握了在MATLAB中對多項式的處理,和圖形的繪制,極值的求解,函數(shù)的求解,微分、積分的處理。本章所介紹的MATLAB處理方法處理的是高等數(shù)學(xué)中經(jīng)常遇到的問題,從這里可以知道MATLAB是一種很好的數(shù)學(xué)工具。本章學(xué)習(xí)時有許多問題需要注意,如多項式在相加時要等長;繪制函數(shù)圖像的函數(shù)為fplot;使用含參數(shù)函數(shù)還可以通過匿名函數(shù)來實現(xiàn),函數(shù)的參數(shù)在使用之前必須先賦值等問題。這一部分也介紹了許許多多的函數(shù),我應(yīng)該在課下熟練掌握,充分理解其作用。
第五章 字符串、單元數(shù)組和結(jié)構(gòu)體
本章主要內(nèi)容總結(jié)如下:
本章主要介紹了的字符串生成、執(zhí)行、字符串與數(shù)值之間的轉(zhuǎn)化;單元數(shù)組的生成和一些操作;結(jié)構(gòu)體的生成和一些操作。在MATLAB中,生成字符串的簡單方法為stringname=’the content of the string’.;單元數(shù)組可以通過賦值語句直接創(chuàng)建,也可以利用cell函數(shù)先為單元數(shù)組分配一個內(nèi)存空間,然后再給各個單元賦值;結(jié)構(gòu)體的生成可以是直接輸入,也可以使用結(jié)構(gòu)體生成函數(shù)struct。還介紹了字符串的比較,字符串的查找和替換;單元數(shù)組的顯示和圖形顯示和單元數(shù)組元素的刪除;結(jié)構(gòu)體中有添加成員變量,刪除成員變量和調(diào)用成員變量。學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)了解了字符串,單元數(shù)組,結(jié)構(gòu)體的一些基本的使用技巧,學(xué)會了字符串,單元數(shù)組,結(jié)構(gòu)體的創(chuàng)建,以及它們的一些特殊的用途,如利用函數(shù)來進行字符串與數(shù)值之間的轉(zhuǎn)化,單元數(shù)組的圖形顯示,在結(jié)構(gòu)體中添加成員變量。字符串,單元數(shù)組和結(jié)構(gòu)體是三種特殊的數(shù)據(jù)結(jié)構(gòu),字符串用于對字符型數(shù)據(jù)結(jié)構(gòu)進行操作,單元數(shù)組和結(jié)構(gòu)體數(shù)據(jù)類型允許用戶將不同類型的數(shù)據(jù)集成為一個單一的變量,因此,相關(guān)的數(shù)據(jù)可以通過一個單元數(shù)組或是結(jié)構(gòu)體進行組織和操作。在這一部分的學(xué)習(xí)中,感覺比較有意思,所以對這部分知識興趣很高。覺的這一部分知識很是有用,所以應(yīng)該好好學(xué)習(xí)。
第六章 MATLAB編程
本章主要內(nèi)容總結(jié)如下:
本章主要介紹了MATLAB的腳本文件和編輯器/調(diào)試器,程序設(shè)計和開發(fā),關(guān)系運算符和邏輯變量,邏輯運算符和函數(shù),條件語句,和循環(huán)。其中腳本文件和編輯器主要介紹了腳本文件如何創(chuàng)建和使用,以及它的命令窗口的介紹,腳本文件的調(diào)試,如何使用腳本文件存儲數(shù)據(jù),以及如何控制輸入和輸出;程序設(shè)計和開發(fā)主要介紹了算法和控制結(jié)構(gòu),結(jié)構(gòu)化程序設(shè)計以及偽代碼;關(guān)系運算符和邏輯變量主要介紹了logical類,logical函數(shù)以及使用邏輯數(shù)組訪問數(shù)組;邏輯運算符和函數(shù)主要介紹了一些如與、或、非等邏輯運算符以及它,們的優(yōu)先級別和使用方法,還介紹了短路邏輯運算符,find函數(shù);條件語句主要介紹了if語句,elseif語句和它們的使用方法,還簡要介紹了如何輸入和輸出參數(shù)的數(shù)量;循環(huán)主要介紹了for循環(huán),break和continue語句,使用數(shù)組作為循環(huán)索引,隱含循環(huán),使用邏輯數(shù)組作為掩碼等知識。學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)初步掌握了MATLAB的腳本文件及其編輯和調(diào)試方法,掌握了MATLAB的程序設(shè)計和開發(fā)流程,和MATLAB的關(guān)系運算符、邏輯運算及函數(shù)操作,MATLAB中的流程控制語句包括if語句,switch語句,contine語句。本章的腳本文件對今后的學(xué)習(xí)非常有幫助,條件語句和循環(huán)語句可用于解決實際生活中許多問題。我對這一部分的認(rèn)識是:感覺不是太難,又不會的地方也及時請教老師,所以沒有遺留太多疑問。再者,大一時也學(xué)過條件語句和循環(huán)語句,所以學(xué)起來沒有那么的吃力。習(xí)題如下:
編程:求[100]以內(nèi)的全部素數(shù)(素數(shù)是大于1且除了1和它本身以外不能被其他任何整數(shù)所整除的整數(shù)。為了判斷整數(shù)m是否為素數(shù),一個最簡單的辦法用2,3,4,5, m-1這些數(shù)逐個去除m看能否除盡,如果全都除不盡,則m是素數(shù);否則,只要其中一個能除盡,則m不是素數(shù)。)
程序如下: disp(2)for m=3:1:100 for x=2:1:m-1 if rem(m,x)==0 break
elseif(x>=m-1)disp(m)end
end end
第七章 MATLAB的符號處理
本章主要內(nèi)容總結(jié)如下:
本章主要介紹了符號運算的簡介,符號表達(dá)式的化簡與替換,符號函數(shù)圖形的繪制,符號微積分,符號方程的求解,符號積分變換,MAPLE函數(shù)的調(diào)用,符號函數(shù)計算器。其中符號運算簡介主要介紹了符號對象,符號變量、表達(dá)式的生成,以及findsym函數(shù)和subs函數(shù),符號和數(shù)值之間的轉(zhuǎn)化;符號表達(dá)式的化簡與替換主要介紹了用collect函數(shù)合并同類項,用expand函數(shù)進行符號表達(dá)式的展開,用horner函數(shù)將函數(shù)轉(zhuǎn)化為嵌套格式,用factor函數(shù)來實現(xiàn)因式分解的功能,simplify和simple函數(shù)來實現(xiàn)表達(dá)式的化簡,符號表達(dá)式的替換可以用subexpr和subs函數(shù);符號函數(shù)圖形繪制主要介紹了符號函數(shù)曲線的繪制,符號函數(shù)曲面網(wǎng)格圖及表面圖的繪制和等值線的繪制;符號微積分主要介紹了符號表達(dá)式求極限,符號微分、積分,級數(shù)求和和Taylor級數(shù);符號方程的求解主要包括代數(shù)方程的求解,代數(shù)方程組的求解,微分方程的求解,微分方程組的求解等;符號積分變換主要有符號傅立葉變換,符號拉普拉斯變換,符號Z變換。學(xué)習(xí)心得體會: 通過本章的學(xué)習(xí)了解了MATLAB符號計算的幾個功能,有計算、線性代數(shù)、化簡、方程求解、特殊的數(shù)學(xué)函數(shù)、符號積分變換,MATLAB提供了與MAPLE的良好接口,通過maple.m和map.m實現(xiàn)。這樣,MATLAB可以實現(xiàn)更強大的符號運算功能功能,為習(xí)慣于MAPLE的用戶提供了方便。本章的學(xué)習(xí)讓我領(lǐng)會了MATLAB強大的符號功能,能夠很好的解決實際生活中問題。
第八章 MATLAB繪圖
本章主要內(nèi)容總結(jié)如下:
本章主要介紹了MATLAB的繪圖功能,首先介紹了MATLAB的圖形窗口,包括圖形窗口的創(chuàng)建與控制,圖形窗口的菜單欄的主要功能;然后介紹了基本圖形的繪制,有二維圖形的繪制,三維圖形的繪制以及如何對圖形進行操作;介紹了特殊圖形的繪制,有條形圖、面積圖、餅狀圖、離散型數(shù)據(jù)圖、方向矢量圖和速度矢量圖、等值線繪制,還介紹了在圖形中添加基本注釋,包括文本框,線條,箭頭,框圖,標(biāo)題,坐標(biāo)軸,顏色條,圖例;最后介紹了一些三維圖像的高級控制。學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)了解了MATLAB的圖形窗口,掌握了MATLAB基本二維圖形、三維圖形的繪制,以及圖形的基本操作,掌握了MATLAB特殊圖形的繪制,如柱狀圖,餅狀圖,掌握了圖形注釋的添加及管理,了解了三維圖形的視點控制及顏色、光照控制。本章的學(xué)習(xí)和實際生活聯(lián)系的非常緊密,把抽象的數(shù)學(xué)式子轉(zhuǎn)化為易理解的圖形,給人一目了然的清晰感覺。這部分知識是一個很好的繪圖工具,對解決其他學(xué)科的問題很有幫助。我在學(xué)習(xí)這一部分知識時,上課緊跟著老師的思路走,模塊很是清晰,學(xué)習(xí)興趣極高,但是仍存在許多不足的地方,課下一定再進一步努力學(xué)習(xí)。習(xí)題如下:
繪圖:在同一圖像窗口中繪制六副子圖
1.在第一個子圖中同時繪制不同線型不同顏色的正弦和余弦曲線,添加圖例、坐標(biāo)軸、標(biāo)題、網(wǎng)格線和邊框線。2.在第二個子圖中繪制磁盤空間的餅圖。3.在第三個子圖中繪制三維網(wǎng)格圖(surf)。4.在第四個子圖中繪制三維曲面圖(mesh)。
5.在第五—六個子圖中同時繪制二維正弦離散圖和紅色點劃線余弦階躍圖。
程序如下:
>> x=[0:pi/10:2*pi];subplot(3,2,1);plot(x,sin(x));hold on;plot(x,cos(x),'r-.');grid on box on >> m=[8 17];>> subplot(3,2,2);>> pie(m,{'可用空間','已用空間'});>> t=0:pi/50:10*pi;>> subplot(3,2,3),plot3(sin(t),cos(t),t);>> grid on >> axis square >> X=-1:0.1:1;>> Y=X';>> X1=X.^2;>> Y1=Y.^2;>> p=ones(3,1);>> p=ones(length(X),1);>> q=ones(1,length(Y));>> X1=p*X1;>> Y1=Y1*q;>> Z=X1+Y1;>> subplot(3,2,4)>> mesh(X,Y,Z)>> n=[0:10:360]*pi/180;>> N=sin(n);>> subplot(3,2,5),stem(n,N)>> subplot(3,2,6),stairs(n,N,'r-.');
運行結(jié)果如下:
第九章 句柄圖形
本章主要內(nèi)容總結(jié)如下:
本章主要介紹了MATLAB 的圖形對象,圖形對象的屬性,和圖形對象的屬性值的設(shè)置和查詢。MATLAB介紹了Root對象,F(xiàn)igure對象,Core對象,Plot對象,Annotation對象,Group對象;圖形對象的屬性包括公共屬性和特有屬性;圖形對象屬性值的設(shè)置和查詢首先通過構(gòu)造函數(shù)返回其創(chuàng)建的對象句柄,然后利用該句柄,用戶可以在對象創(chuàng)建完成后對其屬性值進行查詢和修改。學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)了解MATLAB圖形對象及其屬性,掌握MATLAB圖形對象屬性的設(shè)置及其查詢,掌握了MATLAB圖形句柄的訪問及其操作。句柄圖形是MATLAB中用于創(chuàng)建圖形的面向?qū)ο蟮膱D形系統(tǒng)。通過圖形句柄,MATLAB可以對圖形元素進行操作,而這些圖形正是產(chǎn)生各種類型圖形的基礎(chǔ)。利用圖形句柄,可以在MATLAB中修改圖形的顯示效果,創(chuàng)建繪圖函數(shù)。對于這部分知識的學(xué)習(xí)有所欠缺,課下應(yīng)該多加練習(xí)。
第十章GUI設(shè)計
本章主要內(nèi)容總結(jié)如下:
本章主要介紹了GUI的基本控件,如何創(chuàng)建簡單的GUI,如何向界面中添加控件以及如何設(shè)置設(shè)置控件的屬性和編寫響應(yīng)函數(shù);本章還介紹了通過向?qū)?chuàng)建GUI界面和通過程序創(chuàng)建GUI,其中通過向?qū)?chuàng)建包括1,啟動GUIDE2,2,向GUI中添加控件并設(shè)置控件標(biāo)志和控件顯示文本,3,創(chuàng)建菜單;通過程序創(chuàng)建GUI的步驟主要包括1,需要實現(xiàn)的功能及需要包含的控件2,需要使用的技術(shù)3,創(chuàng)建GUI,4,創(chuàng)建GUI界面和控件,5,初始化GUI,6,定義響應(yīng)函數(shù),7,該GUI的完整M文件;本章還介紹了如何編寫GUI代碼,包括GUI文件和響應(yīng)函數(shù)。學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)掌握了圖形用戶界面和GUI中所包含的多個圖形對象,如窗口、圖標(biāo)、菜單和文本的用戶界面。以某種方式選擇或激活這些對象,通常引起動作或發(fā)生變化。了解GUI的基本控件,掌握了通過GUIDE創(chuàng)建GUI的方法,也掌握了通過程序創(chuàng)建GUI的方法。對于本章的知識我是比較陌生的,以前從來沒有接觸過,所以剛開始學(xué)的時候比較吃力,后來經(jīng)過老師的講解,和自己在課下的學(xué)習(xí),對這部分知識有了一個系統(tǒng)的了解。做作業(yè)時,剛開始時,程序運行出錯,后來經(jīng)過反復(fù)修改,終于運行成功,看著自己的GUI成功運行,心中是比較興奮的,課下一定會多加練習(xí)的。習(xí)題如下:
GUI:繪制拋物線y=ax2+bx+c的圖像,其中參數(shù)a、b、c及標(biāo)題等由界面文本編輯框輸入,設(shè)計邊框線按鈕和邊框菜單。M文件程序如下:
function varargout = untitled(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @untitled_OpeningFcn,...'gui_OutputFcn', @untitled_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});end
if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else
gui_mainfcn(gui_State, varargin{:});end
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = untitled_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;function go_Callback(hObject, eventdata, handles)grid on function tit_Callback(hObject, eventdata, handles)title('?t′??ú??y=a*x.^2+b*x+c')function ax_Callback(hObject, eventdata, handles)axis([-7 7-10 10])function gf_Callback(hObject, eventdata, handles)grid off
function togglebutton5_Callback(hObject, eventdata, handles)function op_Callback(hObject, eventdata, handles)box on box off
function bo_Callback(hObject, eventdata, handles)box on
function bf_Callback(hObject, eventdata, handles)box off
function pushbutton2_Callback(hObject, eventdata, handles)function edit1_Callback(hObject, eventdata, handles)x=str2num(get(handles.edit1,'string'));t=-10:.001:10;y=x(1)*t.^2+x(2)*t+x(3);plot(t,y)function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end
運行結(jié)果如下:
第十一章 Simulink的建模與仿真
本章主要內(nèi)容總結(jié)如下:
本章主要介紹了Simulink中的建模方法和基本功能模塊,首先介紹了Simulink建模的基本操作和基本流程,然后介紹了Simulink的各,功能模塊和常見Simulink模型,最后介紹S函數(shù),并通過實例建模以使讀者對Simulink有進一步的認(rèn)識。學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)了解了Simulink的建模方法和基本模塊,這一部分知識對我來說完全是新的內(nèi)容,學(xué)起來有點吃力,所以應(yīng)該多花點時間在這部分。這部分知識和專業(yè)聯(lián)系的比較緊密,專業(yè)性很強,一定要學(xué)好。
第十二章 文件和數(shù)據(jù)的導(dǎo)入與導(dǎo)出
本章主要內(nèi)容總結(jié)如下:
本章主要介紹了文件的存儲,數(shù)據(jù)的導(dǎo)入,文件的打開,文本文件的讀寫,低級文件I/O和利用界面工具導(dǎo)入數(shù)據(jù)。文本文件的讀寫可以用csvread,csvwrite,dlmread,dlmwrite,textread,textscan等函數(shù)來實現(xiàn)。學(xué)習(xí)心得體會:
通過本章的學(xué)習(xí)了解了MATLAB的基本數(shù)據(jù)操作,掌握了MATLAB中文本文件的讀寫方式和MATLAB通過界面導(dǎo)入導(dǎo)出數(shù)據(jù),了解MATLAB中的基本輸入輸出函數(shù),這部分知識要深入了解,達(dá)到融會貫通的程度。
第三篇:MATLAB課程作業(yè)(本站推薦)
MATLAB結(jié)課作業(yè)
姓名: 班級: 學(xué)號:
摘要
MATLAB是math works公司推出的一項高性能的數(shù)值計算和可視化軟件,其強大的計算和圖形功能使其在科學(xué)計算領(lǐng)域贏得了眾多的用戶。
MATLAB(矩陣實驗室)是MATrix LABoratory的縮寫,是一款由美國The MathWorks公司出品的商業(yè)數(shù)學(xué)軟件。MATLAB是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境。除了矩陣運算、繪制函數(shù)/數(shù)據(jù)圖像等常用功能外,MATLAB還可以用來創(chuàng)建用戶界面及與調(diào)用其它語言(包括C,C++和FORTRAN)編寫的程序。
MATLAB是matrix和laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。是由美國mathworks公司發(fā)布的主要面對科學(xué)計算、可視化以及交互式程序設(shè)計的高科技計算環(huán)境。它將數(shù)值分析、矩陣計算、科學(xué)數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計以及必須進行有效數(shù)值計算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言(如C、Fortran)的編輯模式,代表了當(dāng)今國際科學(xué)計算軟件的先進水平。
MATLABMATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計算、控制設(shè)計、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計與分析等領(lǐng)域。
MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點,使MATLAB成為一個強大的數(shù)學(xué)軟件。在新的版本中也加入了對C,F(xiàn)ORTRAN,C++,JAVA的支持??梢灾苯诱{(diào)用,用戶也可以將自己編寫的實用程序?qū)氲組ATLAB函數(shù)庫中方便自己以后調(diào)用,此外許多的MATLAB愛好者都編寫了一些經(jīng)典的程序,用戶可以直接進行下載就可以用。
“信號與系統(tǒng)”課程是一門實用性較強、涉及面較廣的專業(yè)基礎(chǔ)課,是電子信息類專業(yè)學(xué)生的必修課程。它是將學(xué)生從電路分析的知識領(lǐng)域引入信號處理與傳輸領(lǐng)域的關(guān)鍵性課程,對后繼專業(yè)課起著承上起下的作用。該課程的基本方法和理論大量運用于計算機信息處理的各個領(lǐng)域,特別是通信、圖像處理、數(shù)字信號分析等領(lǐng)域,應(yīng)用更為廣泛。1 信號的表達(dá)
信號可以表達(dá)為時間的函數(shù),根據(jù)定義的不同,信號可以分為連續(xù)時間信號和離散時間信號,分別表示為x(t)和x[n];對于確定信號,時間變量值與對應(yīng)的函數(shù)值形成一一對應(yīng)關(guān)系。要將信號保存到計算機系統(tǒng)中,信號必須表現(xiàn)為有限長度的離散數(shù)字序列;在MATLAB中,信號與對應(yīng)的時間變量采用兩個一維向量(序列)表示,兩序列長度必須相等。
1.1 離散時間信號x(n)的表達(dá):離散時間變量n只能取整數(shù)值,與其對應(yīng)的 函數(shù)值形成離散時間信號;x和n為長度相同的序列,序列元素的編號從1開始;坐標(biāo)序列n值的設(shè)置: n=[-3:3] 設(shè)定起點和終點;x的值可以直接設(shè)置,也可以根據(jù)與n有關(guān)的運算得到(必須先定義n):x=[1 2 3 4 3 2 1]
x=3*n x=exp(j*(pi/8)*n),采用函數(shù)stem(n,x)可以作出離散信號的圖形。例1.1 離散時間信號的表達(dá):畫出下列離散信號
解:MATLAB程序為: n=[0:6];n1=[0:30];x1=[1 2 3 4 3 2 1];x2= 3*n;x3=exp(j*(pi/8).*n1);x4=0.8.^n1;subplot(2,2,1),stem(n,x1);ylabel('x1');subplot(2,2,2),stem(n,x2);ylabel('x2');subplot(2,2,3),stem(n1,x3);ylabel('x3');subplot(2,2,4),stem(n1,x4);ylabel('x4');執(zhí)行結(jié)果為
67系統(tǒng)函數(shù)與系統(tǒng)性質(zhì)分析 3.1系統(tǒng)零點,極點和零極圖
系統(tǒng)函數(shù)是復(fù)變量s或z的有理分式,當(dāng)某變量值使系統(tǒng)函數(shù)為零時,該變量值稱為系統(tǒng)零點;當(dāng)某變量值使系統(tǒng)函數(shù)為無限大時,該變量值稱為系統(tǒng)極點;當(dāng)系統(tǒng)序列a和b為有限長度時,系統(tǒng)零點數(shù)量和極點數(shù)量有限,可以分別用零點序列
和極點序列以表達(dá)為因子形式
表達(dá),此時系統(tǒng)函數(shù)可
上式中k值稱為系統(tǒng)增益。在復(fù)平面上,將零點和極點分別以的形式標(biāo)出,稱為系統(tǒng) 零極圖。利用MATLAB函數(shù)zplane(b,a)可以畫出給定系統(tǒng)的零極圖;利用MATLAB函數(shù)[z,p,k]=tf2zp(b,a)可以以數(shù)值形式得到系統(tǒng)的零點序列,極點序列和增益。例 3.1對于系統(tǒng)函數(shù),求系統(tǒng)的零點序列,極點序列和增
1.6449i-0.8437 ] k = 5
3.2 部分分式分解與系統(tǒng)單位沖激響應(yīng)
利用系統(tǒng)函數(shù)求系統(tǒng)單位沖激響應(yīng)時經(jīng)常采用部分分式分解方法,利用系統(tǒng)極點將系統(tǒng)函數(shù)分解為一階分式的和,每個一階分式與一個沖激響應(yīng)模式對應(yīng): 對于連續(xù)系統(tǒng)
對于離散系統(tǒng)
01.4050i-1.5339 + 1.4050i p =-1.0000 0.7000 + 0.6000i 0.7000編程環(huán)境
MATLAB由一系列工具組成。這些工具方便用戶使用MATLAB的函數(shù)和文件,其中許多工具采用的是圖形用戶界面。包括MATLAB桌面和命令窗口、歷史命令窗口、編輯器和調(diào)試器、路徑搜索和用于用戶瀏覽幫助、工作空間、文件的瀏覽器。隨著MATLAB的商業(yè)化以及軟件本身的不斷升級,MATLAB的用戶界面也越來越精致,更加接近Windows的標(biāo)準(zhǔn)界面,人機交互性更強,操作更簡單。而且新版本的MATLAB提供了完整的聯(lián)機查詢、幫助系統(tǒng),極大的方便了用戶的使用。簡單的編程環(huán)境提供了比較完備的調(diào)試系統(tǒng),程序不必經(jīng)過編譯就可以直接運行,而且能夠及時地報告出現(xiàn)的錯誤及進行出錯原因分析。簡單易用
Matlab是一個高級的矩陣/陣列語言,它包含控制語句、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、輸入和輸出和面向?qū)ο缶幊烫攸c。用戶可以在命令窗口中將輸入語句與執(zhí)行命令同步,也可以先編寫好一個較大的復(fù)雜的應(yīng)用程序(M文件)后再一起運行。新版本的MATLAB語言是基于最為流行的C++語言基礎(chǔ)上的,因此語法特征與C++語言極為相似,而且更加簡單,更加符合科技人員對數(shù)學(xué)表達(dá)式的書寫格式。使之更利于非計算機專業(yè)的科技人員使用。而且這種語言可移植性好、可拓展性極強,這也是MATLAB能夠深入到科學(xué)研究及工程計算各個領(lǐng)域的重要原因。強處理能力
MATLABMATLAB是一個包含大量計算算法的集合。其擁有600多個工程中要用到的數(shù)學(xué) 運算函數(shù),可以方便的實現(xiàn)用戶所需的各種計算功能。函數(shù)中所使用的算法都是科研和工程計算中的最新研究成果,而前經(jīng)過了各種優(yōu)化和容錯處理。在通常情況下,可以用它來代替底層編程語言,如C和C++。在計算要求相同的情況下,使用MATLAB的編程工作量會大大減少。MATLAB的這些函數(shù)集包括從最簡單最基本的函數(shù)到諸如矩陣,特征向量、快速傅立葉變換的復(fù)雜函數(shù)。函數(shù)所能解決的問題其大致包括矩陣運算和線性方程組的求解、微分方程及偏微分方程的組的求解、符號運算、傅立葉變換和數(shù)據(jù)的統(tǒng)計分析、工程中的優(yōu)化問題、稀疏矩陣運算、復(fù)數(shù)的各種運算、三角函數(shù)和其他初等數(shù)學(xué) 運算、多維數(shù)組操作以及建模動態(tài)仿真等。圖形處理
MATLAB自產(chǎn)生之日起就具有方便的數(shù)據(jù)可視化功能,以將向量和矩陣用圖形表現(xiàn)出來,并且可以對圖形進行標(biāo)注和打印。高層次的作圖包括二維和三維的可視化、圖象處理、-12
第四篇:《信號處理matlab仿真》大作業(yè)
中國石油大學(xué)(華東)信息與控制工程學(xué)院
《信號處理matlab仿真》結(jié)課作業(yè)
專業(yè)班級:電子班 學(xué)
號:***** 姓
名:****** 任課老師:***** 2088年11月12日
《信號處理matlab仿真》結(jié)課作業(yè)
一、實現(xiàn)算法及設(shè)計思路
1、基本信號顯示
正弦信號的顯示,可以對它的幅度、角頻率以及初相位進行設(shè)置輸入。
A1=get(handles.edit1,'String');A=str2num(A1);
w1=get(handles.edit2,'String');w=str2num(w1);
p1=get(handles.edit3,'String');p=str2num(p1);t=-2*pi:0.01:2*pi;y=A*sin(w*t+p);plot(t,y,'r-.');grid
title('正弦信號');
方波信號:
t0=-6*pi;t1=6*pi;dt=1;t=t0:dt:t1;y1=square(t);plot(t,y1,'r-');grid
title('方波信號')鋸齒信號:
t0=-6*pi;t1=6*pi;dt=0.05;t=t0:dt:t1;
f=sawtooth(pi/5*t,0);plot(t,f,'r-')grid
title('鋸齒信號')單位階躍信號:
t=-5:0.01:5 y1=u(t);plot(t,y1,'r');grid
title('單位階躍信號')
《信號處理matlab仿真》結(jié)課作業(yè)
U(t):
function f=u(t)f=(t>0);%t>0時,f為1,否則為0 end 抽樣信號:
t=-15:0.01:15;t1=t/pi;y4=sinc(t1);plot(t,y4,'r-');grid title('抽樣信號');指數(shù)信號:
clc t=0:.001:10;ft=exp(t);plot(t,ft,'r-'),grid title('指數(shù)信號)')
2、序列運算
單位脈沖序列,可以對位移量進行設(shè)置:
t=str2num(get(handles.edit1,'String'));k=[t-3:t+7];fk=[(k-t)==0];stem(k,fk)title('單位脈沖序列')單位階躍序列,可以對位移量進行設(shè)置:
t=str2num(get(handles.edit2,'String'));k=[t-3:t+7];fk=[(k-t)>=0];stem(k,fk)title('單位階躍序列')指數(shù)序列,可以對底數(shù)進行設(shè)置:
t=str2num(get(handles.edit3,'String'));
《信號處理matlab仿真》結(jié)課作業(yè)
k=[0:10];fk=t.^k;stem(k,fk)title('指數(shù)序列')序列卷積,可以對卷積幅度進行設(shè)置(針對了特定的兩個序列): t=str2num(get(handles.edit4,'String'));k1=-1:3;k2=-1:3;f1=[0 1 3 2 0 ];f2=[0 4 3 2 1 ];y=t*conv(f1,f2);k0=k1(1)+k2(2);k3=length(f1)+length(f2)-2;k=k0:k0+k3;stem(k,y)title('卷積序列')
3、卷積與傅里葉變換
卷積,針對兩個特定的信號,對卷積幅度進行設(shè)置: clc
t=str2num(get(handles.edit1,'String'));t11=0;
t12=1;
t21=0;
t22=2;
t1=t11:0.001:t12;ft1=2*rectpuls(t1-0.5,1);t2=t21:0.001:t22;ft2=t2;
《信號處理matlab仿真》結(jié)課作業(yè)
t3=t11+t21:0.001:t12+t22;ft3=conv(ft1,ft2);ft3=t*ft3*0.001;plot(t3,ft3)title('f1(t)*f2(t)')方波傅里葉分析,對方波幅度進行設(shè)置: clc f=str2num(get(handles.edit2,'String'));t=0:0.01:2*pi;y=f*sin(t);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3+sin(5*t)/5);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7+sin(9*t)/9);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7+sin(9*t)/9+sin(11*t)/11);plot(t,y),grid title('方波傅立葉分析')
《信號處理matlab仿真》結(jié)課作業(yè)
離散傅里葉變化,針對指數(shù)信號,對底數(shù)進行設(shè)置: t=str2num(get(handles.edit3,'String'));n=-5:5;x=t.^n;k=-200:200;w=(pi/100)*k;X=x*(exp(-j*pi/100)).^(n'*k);p=abs(X);plot(w/pi,p),grid title('離散傅立葉變換');快速傅里葉變化,針對指數(shù)信號,對底數(shù)進行設(shè)置: N=str2num(get(handles.edit3,'String'));x0=sin(N*2*pi*[1:8]/8)*5;dt=2*pi/8;w=linspace(0,2*pi,1000)/dt;x0=x0*exp(-j*[1:length(x0)]'*w)*dt;plot(w,abs(x0))title('快速傅立葉變換')
4、濾波器設(shè)計
FIR低通濾波器,可以對階數(shù)、截止頻率進行設(shè)置:
A1=get(handles.edit1,'String');N=str2num(A1);w1=get(handles.edit2,'String');Wn=str2num(w1);b=fir1(N,Wn,'low');
《信號處理matlab仿真》結(jié)課作業(yè)
fs=2000;[h,f]=freqz(b,1,1024,fs)plot(f,20*log10(abs(h)));FIR高通濾波器,可以對階數(shù)、截止頻率進行設(shè)置: A1=get(handles.edit3,'String');N=str2num(A1);w1=get(handles.edit4,'String');Wn=str2num(w1);b=fir1(N,Wn,'high');fs=2000;[h,f]=freqz(b,1,1024,fs)plot(f,20*log10(abs(h)));FIR帶通濾波器,可以對階數(shù)、截止頻率進行設(shè)置: A1=get(handles.edit5,'String');N=str2num(A1);w1=get(handles.edit6,'String');Wn=str2num(w1);b=fir1(N,Wn);fs=2000;[h,f]=freqz(b,1,1024,fs)plot(f,20*log10(abs(h)));巴特沃斯低通濾波器:
《信號處理matlab仿真》結(jié)課作業(yè)
[b,a]=butter(11,0.5);figure(1);freqz(b,a,512,1000)n=0:40;x1=[(n-3)>=0];x2=[(n-20)>=0];x=x1-x2;y=filter(b,a,x);figure(2)subplot(1,2,1)stem(n,x);axis([0,35,-0.3,1.3]);grid title('x(n)');subplot(1,2,2)stem(n,y)grid title('y=filter(b,a,x)');切比雪夫I型濾波器: wp1=1000;ws1=1500;wc=3000;
《信號處理matlab仿真》結(jié)課作業(yè)
wp=wp1/wc;ws=ws1/wc;[n,wn]=cheb1ord(wp,ws,1,15);[b,a]=cheby1(n,1,wn);freqz(b,a,512,6000);axis([0,3000,-40,5]);
5、簡單圖像處理:
打開圖片:
[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},' 載入圖像 ');%選擇路徑打開圖像
if isequal(filename,0)|isequal(pathname,0)%若 filename 為 0 或 pathname為 0,即未選中文件
errordlg('未選中文件 ','警告');%建立一個名為警告的錯誤對話框,內(nèi)容為“未選中文件 ”
return;else
file=[pathname,filename];%將文件名和目錄名組合成一個完整的路徑
x=imread(file);%讀入圖像
set(handles.axes1,'HandleVisibility','ON');%設(shè)置圖形對象屬性,可從命令窗口中和 GUIs 中訪問
axes(handles.axes1);%定義圖形區(qū)域 axes1
imshow(x);%顯示圖像
《信號處理matlab仿真》結(jié)課作業(yè)
set(handles.axes1,'HandleVisibility','OFF');%設(shè)置圖形對象屬性,不可從命令窗口中和 GUIs 中訪問
axes(handles.axes2);%定義圖形區(qū)域 axes2 imshow(x);%顯示圖像
handles.img=x;%把圖像發(fā)給handles.img end 灰度處理:
global T %定義全局變量
axes(handles.axes2);%定義圖形區(qū)域 axes2 T=getimage;%從坐標(biāo)軸獲取圖像數(shù)據(jù)
x=rgb2gray(handles.img);%利用 rgb2gray函數(shù)對源圖像進行灰度處理 imshow(x);%顯示圖像
xlabel('灰度圖像 ');% x 軸名為“灰度圖像 ”
handles.img=x;%把圖像發(fā)給 handles.img 傅里葉變換:
axes(handles.axes2);i1=handles.img;%獲取圖像
i2=im2double(i1);%圖像矩陣轉(zhuǎn)換成雙精度浮點類型
f1=fft2(i2);%對圖像進行二維離散傅里葉變換
fc1=fftshift(f1);%將變換后的圖象頻譜中心從矩陣的原點移到矩陣的中心
i=log(1+abs(fc1));%對變換后的圖像矩陣數(shù)據(jù)求絕對值后取自然對數(shù) imshow(i);
《信號處理matlab仿真》結(jié)課作業(yè)
xlabel('傅里葉變換圖像 ');handles.img=i;直方圖均衡化:
axes(handles.axes2);%定義圖形區(qū)域 axes2 T=getimage;%從坐標(biāo)軸獲取圖像數(shù)據(jù)
x=rgb2gray(handles.img);%利用 rgb2gray函數(shù)對源圖像進行灰度處理 h=histeq(x);%對圖像進行直方圖均衡化處理
imshow(h);%顯示圖像
xlabel('直方圖均衡化后的圖像 ');handles.img=h;低通濾波器處理: axes(handles.axes2);y1=handles.img;%獲取圖像
x=rgb2gray(handles.img);%灰度變換
f=double(x);%數(shù)據(jù)類型轉(zhuǎn)換為雙精度數(shù)值
g=fft2(f);%二維離散傅里葉變換
g=fftshift(g);%將變換后的圖象頻譜中心從矩陣的原點移到矩陣的中心
[M,N]=size(g);%返回矩陣 g 的大小,即 M 為行數(shù),N 為列數(shù)
nn=2;%二階巴特沃斯低通濾波器 d0=50;%截止頻率 50Hz m=fix(M/2);
n=fix(N/2);%取矩陣 g 的行數(shù)和列數(shù)一半的整數(shù)
《信號處理matlab仿真》結(jié)課作業(yè)
for i=1:M
for j=1:N % 循環(huán)
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));%計算低通濾波器傳遞函數(shù)
result(i,j)=h*g(i,j);%結(jié)果返回到 result
end end result=ifftshift(result);%將圖象頻譜中心從矩陣的中心移到矩陣的原點 y2=ifft2(result);%二維離散傅里葉反變換
y3=uint8(real(y2));%把矩陣 y2 實部轉(zhuǎn)換成 8 位無符號數(shù)據(jù)
imshow(y3);%顯示低通濾波后的圖像
xlabel('低通濾波圖像 ');handles.img=y3;高通濾波器處理: axes(handles.axes2);x=handles.img;%獲取圖像
y=rgb2gray(handles.img);%灰度變換
f=double(y);%數(shù)據(jù)類型轉(zhuǎn)換為雙精度數(shù)值 k=fft2(f);%二維離散傅里葉變換
g=fftshift(k);%將變換后的圖象頻譜中心從矩陣的原點移到矩陣的中心
[M,N]=size(g);%返回矩陣 g 的大小,即 M 為行數(shù),N 為列數(shù)
nn=2;%二階
《信號處理matlab仿真》結(jié)課作業(yè)
d0=25;%截止頻率 25Hz m=fix(M/2);n=fix(N/2);for i=1:M
for j=1:N %循環(huán) d=sqrt((i-m)^2+(j-n)^2);if d<=d0 h=0;else h=1;end result(i,j)=h*g(i,j);%結(jié)果返回到 result end end result=ifftshift(result);%將圖象頻譜中心從矩陣的中心移到矩陣的原點
y2=ifft2(result);%二維離散傅里葉反變換
y3=uint8(real(y2));%把矩陣 y2 實部轉(zhuǎn)換成 8 位無符號數(shù)據(jù) imshow(y3);%顯示高通濾波后的圖像
xlabel('高通濾波圖像 ');handles.img=y3;上下翻轉(zhuǎn):
axes(handles.axes2);
T= getimage;%從坐標(biāo)軸獲取圖像數(shù)據(jù) f=flipud(handles.img);%將圖像矩陣上下翻轉(zhuǎn)
《信號處理matlab仿真》結(jié)課作業(yè)
imshow(f);%顯示翻轉(zhuǎn)后的圖像
xlabel('上下翻轉(zhuǎn)后的圖像 ');handles.img=f;左右翻轉(zhuǎn):
axes(handles.axes2);T= getimage;%從坐標(biāo)軸獲取圖像數(shù)據(jù) f=fliplr(handles.img);%將圖像矩陣左右翻轉(zhuǎn)
imshow(f);%顯示翻轉(zhuǎn)后的圖像
xlabel('左右翻轉(zhuǎn)后的圖像 ');handles.img=f;
二、調(diào)試分析
這個錯誤主要是不細(xì)心造成,檢查發(fā)現(xiàn)右括號少了,加上就解決了。
對變量沒有定義,直接進行使用,在程序開始之前對其進行了重新定義。
《信號處理matlab仿真》結(jié)課作業(yè)
Freqz錯誤使用,對程序及freqz參數(shù)調(diào)整,得到解決。
跟上面的問題一樣,都是對freqz重新調(diào)整,得到解決。如圖所示:
沒有對axes1進行定義,直接使用,程序加了:axes(handles.axes1);得到解決。
《信號處理matlab仿真》結(jié)課作業(yè)
這個錯誤開始的時候以為是圖窗設(shè)計的不合理,或者是程序的問題,就把圖窗和.m文件都刪了重新設(shè)計,還是這個錯誤,排除了圖窗設(shè)計錯誤,就對程序進行重新設(shè)計,最后實現(xiàn)了簡單的圖像處理按鈕的編寫并且沒有了錯誤。
直接對.img進行了使用,對程序作了一下改動,此問題得到解決:
三、測試結(jié)果
1、仿真系統(tǒng)開始界面:
《信號處理matlab仿真》結(jié)課作業(yè)
2、基本信號顯示:
①:正弦信號的顯示:
②:方波信號的顯示:
③:鋸齒信號的顯示:
《信號處理matlab仿真》結(jié)課作業(yè)
④:單位階躍信號的顯示:
⑤:抽樣信號的顯示:
《信號處理matlab仿真》結(jié)課作業(yè)
⑥:指數(shù)信號的顯示:
3、序列運算:
①:單位脈沖序列:
②:單位階躍序列:
③:指數(shù)序列:
《信號處理matlab仿真》結(jié)課作業(yè)
④:序列卷積:
4、卷積與傅里葉變換:
①:卷積:
②:方波傅里葉分析:
《信號處理matlab仿真》結(jié)課作業(yè)
③:離散傅里葉變換:(主要是對指數(shù)信號)
④:快速傅里葉變換:(主要是對指數(shù)信號)
《信號處理matlab仿真》結(jié)課作業(yè)
5、濾波器設(shè)計:
①:FIR低通濾波器:
②:FIR高通濾波器:
③:FIR帶通濾波器:
④:巴特沃斯低通濾波器:(幅頻與相頻圖線)
《信號處理matlab仿真》結(jié)課作業(yè)
⑤:切比雪夫I型濾波器:
6、簡單圖像處理:
①:選擇圖片打開:
《信號處理matlab仿真》結(jié)課作業(yè)
②:灰度處理:
③:傅里葉變換:
④:直方圖均衡化:
《信號處理matlab仿真》結(jié)課作業(yè)
⑤:低通濾波器處理:
⑥:高通濾波器處理:
⑦:上下翻轉(zhuǎn):
《信號處理matlab仿真》結(jié)課作業(yè)
⑧:左右翻轉(zhuǎn):
注:每項操作完成后,都有一個返回主界面按鈕,為退出此項操作,這里不一一展示。
四、課程總結(jié)及心得體會
通過近一段的學(xué)習(xí),我明確了matlab是一款集數(shù)據(jù)分析、矩陣運算、信號處理和圖形顯示于一體,可方便地應(yīng)用于數(shù)學(xué)計算、算法開發(fā)、數(shù)據(jù)采集、系統(tǒng)建模和仿真、數(shù)據(jù)分析和可視化、科學(xué)和應(yīng)用軟件開發(fā)等方面的強悍軟件,是研究人員、工程人員研究工作中不可多得的工具,也是我們學(xué)習(xí)過程中必不可少的軟件。而正因為其強
《信號處理matlab仿真》結(jié)課作業(yè)
大之處,以及可視性及可交互性使我對它的學(xué)習(xí)產(chǎn)生了濃厚的興趣。開學(xué)至今,我們學(xué)習(xí)了 matlab 矩陣及其運算、matlab 程序設(shè)計、m文件操作、m文件 調(diào)試、m文件編程以及 matlab 繪圖等,一段時間下來,對 matlab 還是有了一定的框架性認(rèn)識及編程能力。并且在學(xué)習(xí)matlab 過程中,我感覺到它和 c 語言有許多相似之處,它有c語言的特征,但是比 c 語言編程計算更加簡單,適合于復(fù)雜的數(shù)學(xué)運算。以上就是我對此課程的總結(jié)和心得體會。
根據(jù)自己學(xué)習(xí)的過程提出以下兩點建議:
1、針對上課學(xué)習(xí): 對于軟件類的學(xué)習(xí)存在這樣一個問題,我們可以上課時帶電腦到課堂上或機房授課,一方面老師在講臺上演示,另 一方面同學(xué)們在下面即時練習(xí),這樣印象會更加深刻。
2、針對課下學(xué)習(xí):近期 matlab 學(xué)習(xí),老師給的課下作業(yè)很少,僅有實驗,也許老師考慮同學(xué)們比較忙,以及可能交上來的作業(yè)效果質(zhì)量達(dá)不到預(yù)期效果。但我認(rèn)為適量的課下作業(yè)還是非常有必要的,尤其是對于我們這些普遍自制力較差的情況,這點顯得更加有意義。課下作業(yè)可以布置那些老師演示過的程序或 ppt 中程序略加改動,讓我們下課后及時完成上交??梢允刮覀兗皶r鞏固。
第五篇:數(shù)字圖像matlab結(jié)課作業(yè)[模版]
clear all;close all;I=imread('e:5.tif');imshow(I);I_gray=rgb2gray(I);figure,imshow(I_gray);I_gray_hist=imhist(I_gray);figure,imshow(I_gray_hist);Ibw=im2bw(I_gray,0.7);figure,imshow(Ibw);