2016-01-28 33 views
0

中獲取工作空間中的變量當我運行一個函數時,我不會在 工作空間中獲取所有變量。當我設置斷點時,只有我能夠在工作區中獲得 變量。因此,如何在沒有設置斷點的情況下將工作空間中的變量取出?從函數

回答

3

您可以使用

assignin('base','variablename',value); 

寫從功能,工作空間變量的基本工作區。
使用斷點時,您可以看到執行停止的函數或腳本的工作區。您也可以在編輯器中選擇要在調試模式下看到的工作區(堆棧)。
如果你想你的整個功能,工作區寫入到你的基地工作空間(這在封裝的感覺是不推薦),可以使用

vars=whos; 
for k=1:length(vars) 
    assignin('base', vars(k).name, eval(vars(k).name)); 
end 
5

雖然assignin訣竅是在某些情況下派上用場,一個應通常不會在名稱空間中養成非明確的'欺騙'變量的習慣。更明顯的第一種方法應該是specify outputs to your function,這是基本的MATLAB語法。

如果您有少量的輸出,您可以單獨指定它們。例如:

function [c, d] = trialcode(a, b) 
% Simple summation 
c = a + b; 
% Simple product 
d = a * b; 
end 

如果有許多輸出,一旦方法是所希望的輸出存儲到structurecell array所以你輸出單個變量,而不是具有指定每個輸出。調整上述示例:

function [output] = trialcode(a, b) 
% Simple summation 
output.c = a + b; 
% Simple product 
output.d = a * b; 
end