解析Matlab的workspace(2)
之前介紹了workspace的基本結構(解析Matlab的workspace(一)):
還是接著這種圖往下說,
主要說說,global persistent對於workspace的影響。
當你在func1中申明一個變數a,並且聲明persistent
-persistent a
說明在func1這個workspace中佔有一個空間:
當-persistent a執行之後,a會變成一個空變數,在workspace中,a就是一個[]的空變數。
但是上文(解析Matlab的workspace(一))曾經提到過:
當func 1運行完成以後,消除掉func 1這個workspace。
但是如果func1 workspace存在persistent,那麼func1中的persistent會被保留,當下一次再進入func1時,執行到func1後,查找func1 workspace中存在的a,那麼這一次a就不是一個空變數而是上一次func1執行完畢是的值,那麼就完成了局部變數的任務。
那麼關於global?
假設我們還是在func1 中有個語句是:
global b
那麼在基workspace建立一個空間,執行會在基workspace空間查找有沒有名為b變數,更persistent一樣,當存在的時候,使用存在的,不存在時,建立一個新的空變數
這裡有個問題,注意下:所謂的基workspace是什麼?
其實就是除了所有空間之外的空間:
在來講講下一個問題
什麼是存在?
剛才經常提到的一個東西就是「當存在的時候,使用存在的,不存在時,建立一個新的空變數」
就是只要執行一次persistent/global,那麼就會在「某個」位置佔據一定的空間,這個空間對於當前程序是有效的,那麼就是存在!
這個「存在」其實是一種隱式的存在,就是在workspace窗口沒有顯示,意味著不能直接調用,matlab的變數定義聲明是採用的一種聲明即定義的方法,這裡正好可以加深理解。
又來了一個問題!當你進入一個空間以後,你想清除掉以前遺留在這個workspace或者其他workspace的persistent或者global變數怎麼辦?
clear指令!在這裡可以詳見clear的官方文檔(Remove items from workspace, freeing up system memory)。
推薦閱讀:
※研究電力電子化電力系統穩定性的利器——阻抗法
※如何快速重寫一份你不了解 組織較差的代碼?(算是代碼整理吧)
※XML和MATLAB交互的基本操作[2]:寫入XML
※如何優雅地使用gams、matlab、AIMMS、LINGO?
TAG:MATLAB |