2013-10-05 27 views
1

有沒有辦法將函數varargin中的輸入參數傳遞給sprintf命令?將varargin輸入傳入sprintf

問題是衝刺不喜歡細胞輸入。我已經使用varargin{:}和一系列mat2str(cell2mat()

理想我想有這樣一個循環

for k = varargin 
    filename = sprintf('%s.mat',i) 
    more code...... 
end 

感謝試過!

+0

是否要打印輸入的名稱或它們包含的內容?如果是後者,你是否希望它處理拋出的任何東西,或者我們假設這個特定函數需要什麼類型的輸入有一些限制? – nkjt

+0

輸入將是字符串,我只是想要一種方法將這些輸入傳遞到它們自己的變量名稱中。另外我注意到我在我的例子中將迭代器從k切換到了i,它們應該是相同的。 – user2654568

回答

0

說實話,你快到了。試試這個:

for k = 1:length(varargin) 
    filename = sprintf('%s.mat', varargin{k}) 
    more code...... 
end 

這假定所有的輸入都是字符串。

另一個相關且相當有用的函數是inputname,如果您想要返回作爲參數傳入的變量的名稱,則可以使用它。

for k = 1:length(varargin) 
    filename = sprintf('%s.mat', inputname(k)) 
    more code...... 
end 

有一點要注意:inputname如果輸入未命名,則返回空字符串。

1

爲了幫助人們通過谷歌搜索爲標題這裏登陸:

你可以通過vararginsprintf這樣:

sprintf(format, varargin{:}) 

Matlab的將電池陣列轉換爲逗號分隔值,如

sprintf(format, varargin{1}, varargin{2}, ...)