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

2021-08-08 02:53:25 字數 784 閱讀 8374

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

在主函式中定義全域性變數

function main()

clear all;close all;clc;

x=3;

global y

y=1;

z=sub_f(x);xy

zfunction z=sub_f(x)

% global y

% y=1;

z=x+y;

endend% main function

但是這裡需要注意的是全域性變數y的定義必須包括在主函式的**段中,如果放在主函式之外,或者定義在子函式中就無法被整個程序中的**全域性識別。

利用新的子函式定義來間接引入全域性變數

function main()

clear all;close all;clc;

x=3;

z=sub_f(x);xy

zfunction z=sub_f(x)

z=x+y;

endfunction yy=y()

yy=1;

endend% main function

這種方式通過定義乙個和變數名完全相同的無輸入新函式,通過呼叫它直接返回需要的全域性變數y。

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

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

Matlab的子函式和巢狀函式

主函式 1 乙個.m檔案只有乙個主函式,且正常情況下主函式函式名應該與檔名相同。test.m檔案 function m,n test x,y test function end子函式 1 如果有的函式很短就幾行 又不想多建立乙個.m檔案,且只針對某些函式使用。可以允許在乙個.m檔案中建立多個子函式。...

關於子函式給主函式指標分配記憶體

典型的錯誤例子如下 在這個主函式的指標給子函式傳遞乙個指標,而在子函式中形參有開闢了一塊記憶體,此子函式的指標的記憶體裡儲存的位址與主函式是同一位址,即主函式的指 針和子函式形參的指標都指向同一塊記憶體的位址,但是在子函式裡,為子函式的指標申請了一塊空間,並不影響主函式的指標。因為子函式的指標又指向...