Matlab中的靜態(持久)變量和全局變量


1、靜態變量(persistent)

在函數中聲明的變量,當函數調用完之后就會釋放。如果想保留這個變量的值(供該函數下一次調用),可以把這個變量聲明為靜態變量。靜態變量不能在聲明的時候賦值,而且只能在function里聲明,且只有這個function才能認識它(main函數也不行)。x聲明后是[],就是一個空的array。聲明后需初始化,注意不能直接用persistent x=2;而是用isempty(x)判斷x是否已經賦值。如:

1 function y=test()
2 persistent x;
3 if isempty(x)
4 x=0;
5 end

matlab可以在function里聲明靜態變量,方法:

1 persistent x;

注意它只能在function里聲明,且只有這個function才能認識它。x聲明后是[],就是一個空的array。
聲明后需初始化,注意不能直接用persistent x=2;而是用isempty(x)判斷x是否已經賦值。如:

1 function y=test()
2 persistent a;
3 if isempty(a)
4 a=0;
5 end
6 a=a+1;
7 y=a;

之后調用一次y=test;結果y=1,再調用一次y=test;結果y=2。就是說a記錄了每次調用function后的結果。

2、全局變量(global)

如果想讓某個函數中定義的變量能夠被其他函數調用,需要用到全局變量。注意,在這兩個函數中都要用global修飾這個變量。如:

1 function t1
2 global x;
3 x=0;
4 
5 function t2
6 global x;
7 y=x

 

matlab中global的用法總結:
  各個函數之間以及command window(base workspace)中內存空間都是獨立的,不能互相訪問。
  初始化的時候聲明一次,用的時候再聲明一次【在一個內存空間里聲明global,在另一個內存空間里使用這個global的時候需要再次聲明 global,當然,各內存空間里聲明一次就可以了】。
  如果只是在某個內存空間中使用一下,而擔心在這個內存空間里的變量影響了全局的變量,那么'clear 變量名' 就好了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM