2015-10-21 51 views
1

我有一個GUI回調,其中包含一個for循環,但與腳本中運行相同的代碼相比,循環結束後在循環內檢索的數據/變量不被識別,而是MATLAB說變量是未定義的。腳本運行良好,輸入相同。我很清楚腳本和函數有不同的工作區,但這是否意味着在結束循環後函數中的最新數據會被遺忘? 該回調屬於一個按鈕,而我在該回調中處理的數據是符號。 我想知道是什麼導致此問題錯誤調用GUI中的數據for循環

+0

如果您可以提供[mcve],那麼ppl將更容易幫助您 – scmg

回答

0

功能和腳本之間存在差異。 函數有它們的局部變量。這些變量僅在該函數的範圍內定義。函數內部與調用者範圍隔離。交換數據的唯一方法是函數的輸入和輸出參數。 當程序的流程到達一個函數時,所有變量都被存儲在堆棧中,並且除了輸入參數之外,函數的執行沒有任何變量。在退出函數時,函數中定義的所有局部變量都將被刪除,堆棧中的存儲變量將返回到作用域。 爲了規避這種機制,可以使用

  1. 全局變量
  2. assignin和evalin功能

但是,這不被視爲一個過程編程。