如何在MATLAB中通过函数调用实现单元数组扩展?

时间:2019-09-19 14:33:38

标签: matlab cell-array

我有以下单元格数组:

>> 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

1 个答案:

答案 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