【正文】
子函數(shù) 保存時(shí)所用的函數(shù)文件名與主函數(shù)定義名相同 MATLAB中所有非匿名函數(shù)都需要在 M文件中定義 每個(gè) M文件都要求有一個(gè)主函數(shù),它最先出現(xiàn)在該 M文件中,主函數(shù)范圍比子函數(shù)要廣,主函數(shù)可以在 M文件外部調(diào)用,子函數(shù)則不行 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 21 MATLAB程序設(shè)計(jì) 主函數(shù)與子函數(shù) 同一個(gè) M文件中的主函數(shù)很子函數(shù)的工作空間是彼此獨(dú)立的 各函數(shù)間的信息可以通過輸入輸出變量、全局變量或跨空間指令進(jìn)行傳遞 子函數(shù)中的第一行是其函數(shù)聲明行,而且多個(gè)子函數(shù)的排列次序可以任意改變 M函數(shù)文件中,任何指令通過名字對(duì)函數(shù)進(jìn)行調(diào)用時(shí),子函數(shù)的優(yōu)先級(jí)僅次于內(nèi)裝函數(shù) 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 22 MATLAB程序設(shè)計(jì) 主函數(shù)與子函數(shù) 舉例:求均值和中值 u=1:99。 quad(sqr,0,1) 因?yàn)?sqr是一個(gè)函數(shù)句柄,可以將其作為參數(shù)傳遞給別的函數(shù) 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 19 MATLAB程序設(shè)計(jì) 匿名函數(shù) 匿名函數(shù)中還可以攜帶多個(gè)輸入?yún)?shù) sumAxBy=(x,y)(3*x+4*y)。Input must be a vector39。 for k=1:4 polar(theta,rho(k,:)) pause end 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 12 MATLAB程序設(shè)計(jì) 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 13 MATLAB程序設(shè)計(jì) M腳本文件 腳本創(chuàng)建了 MATLAB工作空間所需的變量,在程序執(zhí)行完畢后,變量仍然保存在工作空間中,如程序中的theta和 rho,可使用 whos命令進(jìn)行查看列表 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 14 MATLAB程序設(shè)計(jì) M函數(shù)文件 M函數(shù)文件與 M腳本文件不同, M函數(shù)文件通常在擴(kuò)充MATLAB函數(shù)庫時(shí)使用,可以接收參數(shù),也可以返回參數(shù), M函數(shù)將運(yùn)算中產(chǎn)生的變量都存放在函數(shù)本身的工作空間中 M函數(shù)文件對(duì)于用戶來說是不透明的,外界只能看到其輸入和輸出 當(dāng) M函數(shù)文件運(yùn)行時(shí), MATLAB就會(huì)建立單獨(dú)的臨時(shí)工作空間,稱為函數(shù)工作空間 運(yùn)算過程中產(chǎn)生的變量都存放在函數(shù)的工作空間中,并不會(huì)與 MATLAB的基本工作空間中的變量相互覆蓋 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 15 MATLAB程序設(shè)計(jì) M函數(shù)文件 舉例 function y=average(x) % [m,n]=size(x) if(~((m==1)|(n==1))|(m==1amp。 rho(3,:)=sin(theta).^2。 rho(1,:)=2*sin(5*theta).^2。MATLAB程序設(shè)計(jì) 《 MATLAB數(shù)據(jù)處理與應(yīng)用 》 20222022學(xué)年選修課 第十二講 王文健 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 2 主要內(nèi)容 M腳本文件和函數(shù)文件 MATLAB控制流 函數(shù)調(diào)用和變量傳遞 M文件調(diào)試方法 文件 I/O函數(shù) 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 3 MATLAB程序設(shè)計(jì) 簡(jiǎn)介 MATLAB除了指令行操作的直接交互外,作為一種高級(jí)應(yīng)用軟件還提供了自己的編程語言 通過編寫 MATLAB程序,可以更加方便地調(diào)用 MTALAB提供的各種功能強(qiáng)大的函數(shù)庫,使得程序能完成復(fù)雜的運(yùn)算,處理大量的數(shù)值數(shù)據(jù) MATLAB程序設(shè)計(jì)語言屬于第四代編程語言,編程方式簡(jiǎn)單、編程效率高、容易維護(hù) 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 4 MATLAB程序設(shè)計(jì) 簡(jiǎn)介 腳本文件和函數(shù)文件是通過 MATLAB程序代碼構(gòu)建的,是 MATLAB實(shí)現(xiàn)運(yùn)算功能的基礎(chǔ) MATLAB提供的控制流則是控制程序流執(zhí)行次序的手段 文件 I/O函數(shù)則是 MATLAB與外界進(jìn)行數(shù)據(jù)交換的重要方式 M文件調(diào)試是程序設(shè)計(jì)的必備環(huán)節(jié) 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 5 MATLAB程序設(shè)計(jì) M文件簡(jiǎn)介 MATLAB提供了豐富的編程語言,使得用戶可以將一連串的命令寫入文件,然后使用簡(jiǎn)單的函數(shù)來執(zhí)行這些命令,文件被保存成文本文件,后綴為 .M M文件是一個(gè)文本文件,可以使用各種文本文件對(duì)它進(jìn)行修改,也可以使用 MATLAB內(nèi)建的 M文件編輯器,還可以在 MATLAB的命令窗口直接鍵入 edit命令對(duì)文件進(jìn)行編輯 edit或者 edit edit表示編輯新的 M文件, edit M文件,后綴可省略 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 6 MATLAB程序設(shè)計(jì) M文件分類 腳本 — Scripts,它包含了 MATLAB的各種命令 函數(shù) — Functions,它可以接受輸入變量,并將運(yùn)算結(jié)果送至輸出變量 MATLAB腳本 經(jīng)常用于一連串費(fèi)時(shí)的命令 沒有輸入和輸出參數(shù) 產(chǎn)生的變量放在 MATLAB的基本工作空間,與其他腳本及 MATLAB的命令行接口共享 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 7 MATLAB程序設(shè)計(jì) M文件分類 MATLAB函數(shù) 在擴(kuò)充 MATLAB函數(shù)庫時(shí)使用 可以接收參數(shù),也可以返回參數(shù) 運(yùn)算中所產(chǎn)生的變量都存放在函數(shù)本身的工作空間中 西南交通大學(xué)摩擦學(xué)研究所 Tribology Research Institute SOUTHWEST JIAOTONG UNIVERSITY 8 MATLAB程序設(shè)計(jì) M文件的基本結(jié)構(gòu) 基本成分如下: function f=fact(n) 函數(shù)定義行 %Compute a factorial value. %FACT(N) returns the factorial of N, 注釋 %usually denoted by N! 幫助文檔 f=prod(1:n)。