У меня есть следующий массив ячеек:
>> tmp0 = {'foo', '%s', 'one'; 'bar', '%d', 3}
tmp0 =
2×3 cell array
'foo' '%s' 'one'
'bar' '%d' [ 3]
Я могу использовать его таким образом с sprintf
:
>> sprintf('%s,%d', tmp0{:,3})
ans =
'one,3'
Я бы хотел добиться того жес вызовом функции, так как если у меня есть функция, которая генерирует массив ячеек, скажем, genCell()
, я не думаю, что смогу достичь чего-то вроде genCell(){:}
в MATLAB.
Итак, я сделал эту функцию:
function cellExp(cellIn)
cellIn{:}
end
Хотя сомнительно, что кажется, что он работает до сих пор, так как вызов cellExp(tmp0(:,3))
кажется таким же, как вызов tmp0{:,3}
>> cellExp(tmp0(:,3))
ans =
'one'
ans =
3
>> tmp0{:,3}
ans =
'one'
ans =
3
Однако, в конечном счете, я не могуиспользуйте его по желанию:
>> sprintf('%s,%d', cellExp(tmp(:,3)))
Error using cellExp
Too many output arguments.