我有以下单元格数组:
>> 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()
,我认为我无法实现类似{{ 1}}。
所以我做了这个功能:
genCell(){:}
尽管可疑,到目前为止它似乎仍然可以正常工作,因为调用function cellExp(cellIn)
cellIn{:}
end
似乎与调用cellExp(tmp0(:,3))
相同
tmp0{:,3}
但是,最终,我无法按需使用它:
>> cellExp(tmp0(:,3))
ans =
'one'
ans =
3
>> tmp0{:,3}
ans =
'one'
ans =
3
答案 0 :(得分:1)
您收到的最后一条错误消息是因为cellExp(tmp0(:,3))
的输出是comma-separeted list。
我不确定您在这里到底要寻找什么,但是我认为这是一种可能会基于myCell = tmp0
返回您的字符串的函数的可能性。
function myStr = mySprintf(myCell)
formatSpec = strjoin(myCell(:,2), ',');
[A1, A2] = myCell{:, 3};
myStr = sprintf(formatSpec, A1, A2);
end