1. 程式人生 > >matlab引數傳遞及全域性變數

matlab引數傳遞及全域性變數

在未加特殊說明的情況下,MATLAB語言將所識別的一切變數視為區域性變數,即僅在其使用的函式內有效。若要將變數定義為全域性變數,則應當對變數進行說明,即在該變數前加關鍵字global。
Matlab的全域性變數使用:
在函式最開頭都加上以下一句
global 變數; 

使這個變數變成全域性變數。

一般來說全域性變數均用大寫的英文字元表示。
清除全域性變數時, 則用命令clear global 變數名,或者用命令clear 變數名

  在函式檔案裡,全域性變數的定義語句應放在變數使用以前,為了便於瞭解所有的全域性變數,一般把全域性變數的定義語句放在檔案的前部。

注意:全域性變數在使用時都需要用global來定義。也就是,在所有需要用到此全域性變數的函式中都要先用global來定義了,然後再使用。(http://www.zdh1909.com/html/matlab/17668.html)

需要指出,在程式設計中,全域性變數固然可以帶來某些方便,但卻破壞了函式對變數的封裝,降低了程式的可讀性。因而,在結構化程式設計中,全域性變數是不受歡迎的。尤其當程式較大,子程式較多時,全域性變數將給程式除錯和維護帶來不便,故不提倡使用全域性變數。如果一定要用全域性變數,最好給它起一個能反應變數具本含義的名字,並且一般用大寫字母表示,以免和其他變數混淆。(http://www.zdh1909.com/html/matlab/17668.html)

下面給出一個使用全域性變數的例子:

----------------------------------------------------------------------------------------------------------


main_plot()

global X         %定義X為全域性變數
X=0:0.1:2*pi;
plot_sin(2)
plot_cos(2)

function plot_sin(a)
global X         %使用全域性變數X時也要用global定義
y=a*sin(X);
figure
plot(X,y)

function plot_cos(a)
global X         %使用全域性變數X時也要用global定義
X=-pi:0.1:pi;    %全域性變數被修改
y=a*cos(X);
figure
plot(X,y)

-------------------------