将varargin输入传递给sprintf

时间:2013-10-05 02:59:31

标签: matlab printf variadic-functions

有没有办法将函数varargin中输入的参数传递给sprintf命令?

问题在于sprint不喜欢细胞输入。我已尝试使用varargin{:}mat2str(cell2mat( )

系列

理想情况下,我希望将其置于循环中

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

谢谢!

2 个答案:

答案 0 :(得分:1)

通过谷歌搜索标题帮助人们登陆:

您可以通过这种方式将varargin传递给sprintf

sprintf(format, varargin{:})

Matlab会将单元格数组转换为逗号分隔值,例如

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

答案 1 :(得分: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将返回一个空字符串。