Global
程序函數
函數功能:聲明全局變數。
語法格式:
global X Y Z
聲明X、Y、Z為全局變數。
例如:
function main
close all; clear; clc;
function fun_a
num_in_a = 5;
fprintf('It is in function A: %f,\n', num_in_b); % error
end
function fun_b
num_in_b = 6;
fprintf('It is in function B: %f,\n', num_in_a); % error
end
fun_a;
fun_b;
end
由於num_in_a,num_in_b分別是函數fun_a和fun_b的局部變數,因此fun_a只能訪問num_in_a而不能訪問num_in_b。
但是如果,函數不在同一個等級上。例如,嵌套函數,情況就有所不一樣:
function main
close all; clear; clc;
function fun_a
% fprintf('It is in function A: %f,\n', num_in_b); % error
function fun_b
num_in_b = 6;
fprintf('It is in function B: %f,\n', num_in_a); % correct
end
num_in_a = 5;
fun_b;
end
fun_a;
end
定義全局變數就是可以讓這些函數共享這個全局變數,即只要在這個函數內部加上:
global X Y Z
那麼,該函數便擁有了對X、Y、Z的訪問權。
而且全局變數在內存中也只有一份,在一個函數中修改,在另外一個函數中的值也會發生變化。
相關函數:isglobal
function streamline_test
close all; clear; clc;
global startx starty startz
startx = 1; starty = 1; startz = 1;
'Position',[250,20,70,25],...
'Callback',{@StartYAdd_Callback});
uicontrol(gcf, 'Style','pushbutton','String','starty --',...
'Position',[350,20,70,25],...
'Callback',{@StartYMinus_Callback});
uicontrol(gcf, 'Style','pushbutton','String','display',...
'Position',[450,20,70,25],...
'Callback',{@DispNum_Callback});
end
function StartYAdd_Callback(~, ~)
global starty
starty = starty + 1;
end
function StartYMinus_Callback(~, ~)
global starty
starty = starty - 1;
end
function DispNum_Callback(~, ~)
global startx starty startz
fprintf('startx: %f, starty: %f, startz: %f\n', startx, starty,
startz);
end