在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檔案中建立多個子函式。...
關於子函式給主函式指標分配記憶體
典型的錯誤例子如下 在這個主函式的指標給子函式傳遞乙個指標,而在子函式中形參有開闢了一塊記憶體,此子函式的指標的記憶體裡儲存的位址與主函式是同一位址,即主函式的指 針和子函式形參的指標都指向同一塊記憶體的位址,但是在子函式裡,為子函式的指標申請了一塊空間,並不影響主函式的指標。因為子函式的指標又指向...