我有以下单元格数组:
>> 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()
,我认为我无法在 MATLAB 中实现类似genCell(){:}
。
所以我做了这个函数:
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.
您收到的最后一条错误消息是因为cellExp(tmp0(:,3))
的输出是逗号分隔的列表。
我不确定您在这里寻找的确切内容,但我认为这是函数的一种可能性,该函数将根据myCell = tmp0
返回您的字符串。
function myStr = mySprintf(myCell)
formatSpec = strjoin(myCell(:,2), ',');
[A1, A2] = myCell{:, 3};
myStr = sprintf(formatSpec, A1, A2);
end