5
我想爲所有傳遞給MATLAB函數的輸入參數編寫一個通用記錄函數。是否可以輕鬆地將所有輸入參數傳遞給另一個函數,而無需單獨命名參數?在日誌功能中,我當然可以在for循環中使用inputname(i)
來獲取參數名稱。我寧願不必在主函數中執行這個邏輯。那麼,有沒有辦法像LogParams(allInputParams)
這樣做?在MATLAB中記錄函數參數
我想爲所有傳遞給MATLAB函數的輸入參數編寫一個通用記錄函數。是否可以輕鬆地將所有輸入參數傳遞給另一個函數,而無需單獨命名參數?在日誌功能中,我當然可以在for循環中使用inputname(i)
來獲取參數名稱。我寧願不必在主函數中執行這個邏輯。那麼,有沒有辦法像LogParams(allInputParams)
這樣做?在MATLAB中記錄函數參數
這聽起來像你有一個主要功能,並從該功能,你想調用函數LogParams
獲得傳遞給主函數的變量的名稱列表。這裏是你可以實現你的功能LogParams
一個辦法:
function names = LogParams
names = evalin('caller','arrayfun(@inputname,1:nargin,''UniformOutput'',0)');
end
輸出從LogParams
返回將包含傳遞給調用LogParams
函數的變量名的單元陣列。上述解決方案使用以下功能:
作爲LogParams
如何工作,創建下面的函數調用它的圖示:
function main_function(a,b,varargin)
disp(LogParams);
end
和現在與多個輸入端(假定變量x
,y
調用它,並且z
被定義在工作區):
>> main_function(x,y)
'x' 'y'
>> main_function(x,y,z)
'x' 'y' 'z'
>> main_function(x,y,z,z,z,z)
'x' 'y' 'z' 'z' 'z' 'z'
非常整齊! ..........(點到墊15個字符) – 2010-01-12 06:44:38
謝謝。這有幫助。 – 2010-01-12 14:58:54
+1對呼叫功能的影響最小。 – Marc 2010-01-13 15:19:06