Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中以函数调用的形式实现单元阵列扩展?_Matlab_Cell Array - Fatal编程技术网

如何在MATLAB中以函数调用的形式实现单元阵列扩展?

如何在MATLAB中以函数调用的形式实现单元阵列扩展?,matlab,cell-array,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' 我希望能够通过函数调用实现同样的功能,因为如果我有一个生成单

我有以下单元格数组:

>> 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
返回您的字符串

函数myStr=mySprintf(myCell) formatSpec=strjoin(myCell(:,2),','); [A1,A2]=myCell{,3}; myStr=sprintf(formatSpec,A1,A2); 结束
我认为这是行不通的。您需要将一组参数传递给
sprintf
,但函数无法返回该参数。即使您的函数使用了,您仍然必须显式地获取它们(即,它不只是将它们全部作为逗号分隔的列表转储)。我认为在这里使用临时变量不是一个很好的方法。否,
cellExp
没有输出。它向控制台显示其输入,但不定义任何输出参数。