- MATLAB應(yīng)用實(shí)例精講:數(shù)學(xué)數(shù)值計(jì)算與統(tǒng)計(jì)分析篇
- 陳超等編著
- 2145字
- 2019-01-01 12:51:42
1.3 MATLAB入門實(shí)例
下面通過幾個入門的實(shí)例講解來加深讀者對MATLAB的了解。
1.3.1 命令行程序
在命令窗口,用戶可以直接調(diào)用MATLAB內(nèi)部已經(jīng)編譯好的M文件,也可以直接在命令行提示符下輸入命令,然后按回車鍵運(yùn)行。下面通過一個矩陣操作的例子來介紹命令行程序。
【示例 1-1】在命令窗口中定義兩個矩陣,進(jìn)行各種矩陣運(yùn)算。其中,函數(shù)magic用于生成一個魔術(shù)矩陣A。程序如下所示:
>> A=magic(3) %定義一個魔術(shù)矩陣A
得到的結(jié)果如下:
A = 8 1 6 3 5 7 4 9 2
輸入以下語句,生成一個和A一樣大小全1的矩陣B。
>> B=ones(3) %定義全1矩陣B
得到的結(jié)果如下:
B = 1 1 1 1 1 1 1 1 1
將A、B兩個矩陣相加,得到結(jié)果如下:
>> A+B %計(jì)算符號矩陣加法A+B ans = 9 2 7 4 6 8 5 10 3 >>
在命令窗口中可以使用MATLAB工具箱函數(shù)對矩陣進(jìn)行操作。使用flipud函數(shù)可以對矩陣進(jìn)行上下翻轉(zhuǎn),以前面定義的魔術(shù)矩陣A為例。
>> flipud(A) ans = 4 9 2 3 5 7 8 1 6
可以看到,結(jié)果與前面分析的一樣。而fliplr可以對矩陣進(jìn)行左右翻轉(zhuǎn)。
下面針對函數(shù)humps來介紹MATLAB在科學(xué)計(jì)算中的應(yīng)用。
【示例1-2】humps函數(shù)表達(dá)式如下:

下面的代碼是利用函數(shù)fzero分別找出了humps函數(shù)在x=1.3附近的零點(diǎn)位置。
>> format long >> H_humps=@humps >> x=fzero(H_humps,1.3)
得到結(jié)果如下:
x = 1.299549682584822
現(xiàn)在要計(jì)算它在x∈[?1,2]時(shí)的面積。在MATLAB命令窗口,用戶只要輸入如下命令即可。
>> x=linspace(-1,2,100); >> y=humps(x); >> format long >> area=trapz(x,y)
其中,函數(shù)linspace將-1到2之間的數(shù)值100等分(產(chǎn)生間隔均勻的100個抽樣點(diǎn)),函數(shù)trapz將根據(jù)均勻間隔的抽樣值列表,使用梯形分割來近似估計(jì)函數(shù)的面積(積分)。得到結(jié)果如下:
area = 26.344731195245956
以上只是利用MATLAB進(jìn)行科學(xué)計(jì)算的一個例子,其詳細(xì)內(nèi)容將在本書后面的章節(jié)介紹。
1.3.2 MATLAB繪圖
利用1.3.1節(jié)介紹的humps函數(shù),使用MATLAB繪圖函數(shù)可以方便快捷地得到我們需要的圖形。
>> plot(x,y)
所得結(jié)果如圖1-34所示。

圖1-34 MATLAB繪圖示例
利用MATLAB進(jìn)行三維繪圖同樣很方便。下面的代碼是產(chǎn)生一條三維螺旋線,如圖1-35所示。
>> t=linspace(0,10*pi); >> plot3(sin(t),cos(t),t)

圖1-35 三維螺旋線
關(guān)于繪圖更詳細(xì)的內(nèi)容,請參閱本書后面的章節(jié)。
1.3.3 M文件的編寫
MATLAB不僅具有強(qiáng)大的數(shù)值處理和符號運(yùn)算功能,而且可以像計(jì)算機(jī)高級語言一樣進(jìn)行程序設(shè)計(jì)。用MATLAB編程語言編寫的程序稱為M文件,它可以在MATLAB的工作空間運(yùn)行。M文件根據(jù)調(diào)用方式的不同分為命令文件和函數(shù)文件兩類。命令文件不需要用戶輸入任何參數(shù),也不會輸出任何參數(shù),它只是各種命令的疊加,與DOS文件類似,運(yùn)行時(shí)系統(tǒng)按順序執(zhí)行文件中的各個語句。函數(shù)文件一般需要用戶輸入?yún)?shù),也有可能輸出用戶需要的參數(shù),函數(shù)文件在格式上必須以function語句作為引導(dǎo),在功能上主要解決參數(shù)傳遞和調(diào)用的問題。在作用對象上,命令文件的作用對象是工作空間中的變量。因此,命令文件中的變量一般不需要預(yù)先定義,而函數(shù)文件中的變量是局部變量,除輸入、輸出的變量會駐留在工作空間以外,其他變量不會駐留在工作空間。
命令文件的編寫很簡單,通過File→New→M-File菜單打開M文件編輯器,把想要執(zhí)行的命令按行編寫,編寫完成以后,將文件確定一個名稱保存起來即可。要注意的是,命令文件存盤時(shí)不要忘記加上M文件的擴(kuò)展名.m。當(dāng)要執(zhí)行時(shí),只要在命令窗口的提示符下輸入該文件的文件名,按回車鍵后,系統(tǒng)即可運(yùn)行該命令文件。
函數(shù)文件一般分為定義行、幫助信息行、函數(shù)體和注釋四部分。函數(shù)定義行為函數(shù)文件的第一行,功能是定義函數(shù)名、確定輸入和輸出變量。格式一般為
function<變量名>=函數(shù)名(參數(shù))
緊跟定義行后的以符號%開頭的文字說明部分是幫助信息行。該行的文字信息在用戶應(yīng)用lookfor或help+<函數(shù)名>進(jìn)行查詢幫助信息時(shí),系統(tǒng)顯示該行的文字信息。接下來的是函數(shù)體,也就是函數(shù)實(shí)現(xiàn)其功能的程序,是函數(shù)文件編寫的主要部分。在函數(shù)文件中,凡是以%開頭的文字部分都是注釋內(nèi)容,它可以被安排在程序的任何地方。
【示例 1-3】 編寫一個命令文件,畫出z=3-(x-3)2-(y-3)2在x∈[0,6],y∈[0,6]上的曲面。程序代碼如下:
%%%這是一個畫二元函數(shù)z=3-((x-3).^2+(y-3).^2)圖的命令文件 D=[0:0.1:6]; %%%%創(chuàng)建向量D [X,Y]=meshgrid(D); %%%%創(chuàng)建向量X、Y,并賦值為D surf(X,Y,3-((X-3).^2+(Y-3).^2)) %%%%繪制曲面圖 axis off %關(guān)閉坐標(biāo)軸
得到的結(jié)果如圖1-36所示。

圖1-36 曲面圖
【示例1-4】編寫一個M函數(shù)文件,求小于任何給定正整數(shù)的自然數(shù)的階乘值。
該示例程序代碼如下所示:
function f=ex0104(n) %這是一個求小于任何正整數(shù)的自然數(shù)的階乘值的示例 %調(diào)用格式c=zsqf2(n) %參數(shù)說明:n可以是任意的正整數(shù) f(1)=1 i=1; while f(i)<ceil(n/i) f(i+1)=f(i)*(i+1) i=i+1; end
在命令窗口調(diào)用這個函數(shù),求得10000以內(nèi)的自然數(shù)的階乘值有7個,結(jié)果如下:
>>ex0104(10000) ans = 1 2 6 24 120 720 5040
1.3.4 GUI實(shí)例
GUI(Graphical User Interface)即圖形用戶界面,是由圖形對象構(gòu)建的用于人與計(jì)算機(jī)交互信息的界面。在圖形用戶界面中,用戶可以根據(jù)界面中的提示信息完成自己的工作,而不需要記憶大量煩瑣的命令,只須通過鼠標(biāo)、鍵盤等簡捷的方式與計(jì)算機(jī)交互信息、選擇想要運(yùn)行的程序、控制程序的運(yùn)行、實(shí)時(shí)顯示圖形信息。換言之,圖形用戶界面就是包含了各種圖形控制對象(圖形窗口、菜單、對話框和文本等)用于和計(jì)算機(jī)交互信息的圖形界面。
【示例1-5】建立一個進(jìn)度條監(jiān)視一個循環(huán)語句的進(jìn)度。
程序代碼如下:
h=waitbar(0,'請等待……'); for i=1:10000 waitbar(i/10000) end
建立的進(jìn)度條如圖1-37所示。

圖1-37 正在運(yùn)行的進(jìn)度條
關(guān)于GUI的知識,本書有專門的章節(jié)介紹,請讀者參閱。
1.3.5 使用Simulink進(jìn)行系統(tǒng)仿真
Simulink是MATLAB最重要的組件之一,它提供一個動態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境。在該環(huán)境中,無須大量書寫程序,只需要通過簡單直觀的鼠標(biāo)操作,就可構(gòu)造出復(fù)雜的系統(tǒng)。Simulink具有適應(yīng)面廣、結(jié)構(gòu)和流程清晰及仿真精細(xì)、貼近實(shí)際、效率高、靈活等優(yōu)點(diǎn),它已被廣泛應(yīng)用于控制理論和數(shù)字信號處理的復(fù)雜仿真和設(shè)計(jì)。
【示例1-6】用Simulink仿真生成一個正弦波發(fā)生器,如圖1-38所示。

圖1-38 正弦波仿真系統(tǒng)
運(yùn)行得到的結(jié)果如圖1-39所示。

圖1-39 正弦波圖形
- Extending Jenkins
- Boost.Asio C++ Network Programming(Second Edition)
- Instant Node Package Manager
- 案例式C語言程序設(shè)計(jì)
- Software Defined Networking with OpenFlow
- 圖解Java數(shù)據(jù)結(jié)構(gòu)與算法(微課視頻版)
- 軟件測試工程師面試秘籍
- RTC程序設(shè)計(jì):實(shí)時(shí)音視頻權(quán)威指南
- 大模型RAG實(shí)戰(zhàn):RAG原理、應(yīng)用與系統(tǒng)構(gòu)建
- Learning DHTMLX Suite UI
- Haskell Data Analysis Cookbook
- Extending Unity with Editor Scripting
- Machine Learning for OpenCV
- Learning Jakarta Struts 1.2: a concise and practical tutorial
- 趣味掌控板編程