Matlab的子函式和巢狀函式

2021-10-05 06:32:59 字數 1299 閱讀 9272

主函式:

(1)乙個.m檔案只有乙個主函式,且正常情況下主函式函式名應該與檔名相同。

test.m檔案:

function [m,n]

= test(x,y)

%test function

end

子函式:

(1)如果有的函式很短就幾行**,又不想多建立乙個.m檔案,且只針對某些函式使用。可以允許在乙個.m檔案中建立多個子函式。

(2)子函式只能在定義的.m檔案內使用。主函式可以呼叫子函式、巢狀函式可以呼叫子函式、子函式之間可以相互呼叫。子函式與子函式、子函式與主函式之間資料交流只能通過傳參。

(3)子函式不能直接改變主函式或其他子函式的資料,只能通過傳參和返回值。

格式如下:

function [m,n]

= test(x,y)

%主函式

%test function

m = m_add(x,y)

%呼叫子函式1

endfunction k = m_add(i,j)

%子函式1

k =i +j;

t = m_sub(k,i)

%呼叫子函式2

endfunction b = m_sub(s,t)

%子函式2

b = s-t;

end

巢狀函式:

(1)子函式巢狀函式的區別僅僅在於主函式的變數對其是否可見。主函式資料對巢狀函式可見(類似全域性變數)。嚴格來講是巢狀函式可以直接操作主函式在呼叫巢狀函式之前宣告的變數

(2)巢狀函式之間的私有(內部)資料不互通,當然巢狀函式和子函式資料也不通。

(3)巢狀函式也能呼叫子函式,反之子函式不能呼叫巢狀函式。

格式如下:

function k = test(x,y)

%主函式

a =5;

b = my_add(x,y)

; function t = my_add(i,j)

%巢狀函式

t = i+j+a;

d = my_sub(t,i)

; end

endfunction s = my_sub(m,n)

%子函式

s = m - n;

end

謝謝**,如有錯誤,歡迎指點!

主函式和子函式 私有函式 巢狀函式

同乙個指令碼檔案中若有多個函式,則分為主函式和子函式,每個m 檔案都要求有乙個主函式,它最先出現在該 m檔案中 與檔案同名。主函式可以與該 m檔案外的其他函式相互作用,只要該檔案所在目錄屬於 matlab 搜尋路徑 子函式 subfunctions 的執行範圍 只能與該 m檔案中的其他函式相互作用,...

Matlab 主函式和子函式間接傳遞變數

在matlab一般可以通過函式的輸入和輸出介面來傳遞變數,但是有的時候,我們因為函式已經寫好,並在比較多的指令碼中被呼叫,此時再修改輸入介面的工作量比較大,如果可以通過其它方式傳遞變數,就可以省去很多的工作量。初步想了一下,可以通過兩種形式實現 在主函式中定義全域性變數 function main ...

MATLAB 畫訊號頻譜的子函式

輸入訊號序列和取樣率,該子函式可以畫出該訊號的頻譜圖。function f,spec,nfft spec fft plot sample,l,fs 輸入資料說明 sample 訊號序列 l 訊號序列的長度 fs 該訊號的取樣頻率。輸出資料說明 f 頻率 spec 頻譜圖縱座標 nfft 2 next...