1. 程式人生 > 實用技巧 >如何規範地編寫一個MATLAB函式檔案

如何規範地編寫一個MATLAB函式檔案

在matlab中,M檔案分為指令碼檔案和函式檔案。如果M檔案的第一個可執行語句以function開頭,那這個M檔案就是函式檔案。函式檔案內定義的變數為區域性變數,只在函式檔案內部起作用,當函式檔案執行完後,這些內部變數將被清除。

本文介紹如何規範地編寫一個函式檔案。

通常,函式檔案由函式宣告行、H1行、線上幫助文字區、編寫和修改記錄、函式主體等幾個部分組成。格式如下:

function 輸出形參表 = 函式名(輸入形參表)

線上幫助文字區,其中第一行為H1行

編寫和修改記錄

函式主體


函式宣告行

  1. 由關鍵字function引導,指明這是一個函式檔案,並定義函式名、輸入引數和輸出引數。
  2. 函式名應當與檔名一致(儲存函式檔案時會預設以函式名作為檔名予以儲存),如果兩者不一致,MATLAB將以檔名為準,以後呼叫時使用檔名呼叫該函式。
  3. 在指令碼檔案中編寫函式時,需以end結尾;獨立的函式檔案不需以end結尾。
  4. MATLAB中的函式檔名必須以字母開頭,可以是字母、下劃線、數字的任意組合,但不可以超過31個字元。

H1行

  1. 緊隨函式宣告行之後的以“%”開頭的第一註釋行。
  2. H1行包括大寫的函式名和函式功能簡要描述,採用lookfor命令可在命令列視窗顯示H1行的資訊。
  3. 建議在編寫H1註釋行時,儘量採用英文表述,這是為了之後的使用過程中關鍵詞檢索的方便。

線上幫助文字區

  1. 包括H1行以及H1行之後的連續的以“%”開頭的註釋行。
  2. 通常包括函式輸入變數和輸出變數的含義以及呼叫說明。
  3. 採用help命令可在命令列視窗顯示線上幫助文字區的資訊。

編寫和修改記錄

  1. 與線上幫助文字區以一個空行相隔。
  2. 該行以“%”開頭,記錄了編寫及修改函式檔案的作者、日期、版本等內容,以方便後來的使用查詢或修改。

函式主體

  1. 應與編寫和修改記錄以一個空行相隔。
  2. 這部分內容包括了所有實現該函式檔案功能的MATLAB指令。

例:完整的函式檔案示範。

 1 function spir_len = spirallength(d, n, lcolor)
 2 % SPIRALLENGTH plot a circle of radius as r in the provided color and calculate its area 
3 % 輸入引數: 4 % d: 螺旋的旋距 5 % n: 螺旋的圈數 6 % lcolor:畫圖線的顏色 7 % 輸出引數: 8 % spir_len:螺旋的周長 9 % 呼叫說明: 10 % spirallength(d,n):以引數d,n畫螺旋線,螺旋線預設為藍色 11 % spirallength(d,n,lcolor):以引數d,n,lcolor畫螺旋線 12 % spir_len = spirallength(d,n):計算螺旋線的周長,並以藍色填充螺旋線 13 % spir_len = spirallength(d,n,lcolor):計算螺旋線的周長,並以lcolor顏色填充螺旋線 14 15 % 版本號V1.0,編寫於1999年9月9號,修改於1999年9月10號,作者:亞索 16 17 if nargin > 3 18 error('輸入變數過多!'); 19 elseif nargin == 2 20 lcolor = 'b'; % 預設情況下為藍色 21 end 22 23 j = sqrt(-1); 24 phi = 0 : pi/1000 : n*2*pi; 25 amp = 0 : d/2000 : n*d; 26 spir = amp .* exp(j*phi); 27 28 if nargout == 1 29 spir_len = sum(abs(diff(spir))); 30 fill(real(spir), imag(spir), lcolor); 31 elseif nargout == 0 32 plot(spir, lcolor); 33 else 34 error('輸出變數過多!'); 35 end 36 37 axis('square');

在命令列視窗中輸入:

1 spirallength(0.25,4)

輸出結果如圖:

在命令列視窗輸入:

1 spir_len = spirallength(0.25,4)

輸出的結果不僅包括上圖,而且還在命令列視窗顯示spir_len=12.6542。


函式引數指令集

  • nargin:表示一個變數,指定呼叫函式所帶引數的個數
  • nargout:表示一個變數,指定呼叫函式所返回的引數的個數

本文完。

1.編寫test函式

 1 function [o,p,q,r] = test( n )%%%%%%%%%%%%%%%編寫function test函式
 2 
 3 %%%%%%%%%%%%%%%%%%%%%%test函式變數為n,返回值為o,p,q,r
 4 
 5 o= 0;
 6 p=0;
 7 q=6;
 8 r=128;
 9 for i = 1:n
10     o = o + i;
11     p=p+1;
12     q=q.*n
13     r=r.^0.2
14     
15 
16 end

2.呼叫tset函式的main函式

1 clear all;
2 clear clc;
3 [a,b,q,r]= test(10)%%%%%%%%%%%%%%%%%%呼叫test函式n=10,a,b,q,r四個為n=10的test函式的返回值!

參考網址:(如何規範地編寫一個MATLAB函式檔案)https://blog.csdn.net/qq_15971883/article/details/82884353

    (matlab中如何定義函式)https://jingyan.baidu.com/article/4e5b3e1954ed9c91901e240b.html

     (matlab基礎:函式FUNCTION編寫)https://blog.csdn.net/qq_15971883/article/details/82884353

     (Matlab建立檔案、function檔案和函式呼叫)https://blog.csdn.net/Netceor/article/details/95063340?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param#%E4%B8%89%E3%80%81%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0