2013-08-10 2 views
0

Есть ли способ передать входы в varargin в fprintf внутри цикла?Передача Varargin в fprintf

Например, если у вас есть что-то вроде:

function = func_name(var1,varargin) 
    for i = varargin 
     fprintf('The first name is %s , another is %s',var1,varargin) 
    end 

Если входы являются name1name2 и name3, я хочу петлю на выходе:

The first name is name1, another is name2 
    The first name is name1, another is name3 

fprintf не может принимать входные ячейки, и изменение varargin на varargin{:} (что делает его разделенным списком) не совсем то, что я хочу, потому что он не выделяет входы varargin в отдельные петли.

Я также не могу использовать inputname(), потому что если вход является выражением, а не одной переменной, Matlab возвращает пустую строку '' при вызове имени ввода. Есть ли способ по-прежнему использовать inputname() и добавить счетчик в цикл или индексировать входы varargin и прокручивать их?

ответ

0

При использовании for i = varargin, i перебирает элементы varargin, так что вы можете просто изменить varargin в fprintf заявлении i

function = func_name(var1,varargin) 
for i = varargin 
    fprintf('The first name is %s , another is %s',var1,i) 
end 

Кстати, it is recommended избегать использования i и j в качестве переменных в MATLAB.

+0

oh, конечно, спасибо – user2654568

Смежные вопросы