官术网_书友最值得收藏!

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

AB兩個矩陣相加,得到結(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)2x∈[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 正弦波圖形

主站蜘蛛池模板: 黎川县| 奎屯市| 若尔盖县| 南澳县| 永靖县| 安康市| 黄浦区| 瓮安县| 花垣县| 闽侯县| 沁阳市| 陈巴尔虎旗| 光泽县| 自贡市| 茂名市| 连平县| 广水市| 遵化市| 久治县| 墨竹工卡县| 北票市| 武邑县| 加查县| 微山县| 拜泉县| 广宁县| 礼泉县| 曲沃县| 福贡县| 兰西县| 连州市| 乌苏市| 呼伦贝尔市| 马边| 常山县| 白河县| 巴楚县| 东宁县| 如东县| 邳州市| 平江县|