2015-09-15 48 views
2

可以使用函數inputname檢索調用中傳遞給當前正在執行的函數的工作空間變量名稱。但是,是否有任何等價的函數來獲取調用當前正在執行的函數中指定的輸出參數的名稱?檢索函數中輸出參數的名稱

想象我有以下功能:

function [a,b,c] = test(x) 
disp([ouputname(1),ouputname(2),ouputname(3)]) 
end 

運行此功能:

[my,name,is] = test(x) 

預期的結果應該是:

mynameis 

回答

1

簡單沒有沒有。

複雜:Matlab代碼是在運行時「編譯」,並沒有辦法,它知道[my,name,is]它返回的test(x)結果之前。


解決方法:如果你想確保,該函數中使用的字符串等於變量返回到工作區,你可以做以下使用assignin

function test(x, varnames) 

a = 1; 
outputname{1} = varnames{1}; 
assigin('base', outputname{1}, a) 

... 

c = 3; 
outputname{3} = varnames{3}; 
assigin('base', outputname{3}, c) 

disp([outputname{:}]) 

end 

和請致電您的功能,如:

text(x,{'my','name','is'}) 

然後您的工作區中就會有這個變量,而您的功能輸出:

「mynameis」