根据索引将内容分配给单元阵列

时间:2017-10-31 09:02:16

标签: arrays matlab cell vectorization

我想为单元格数组的每个元素分配一个取决于单元格索引的内容。

示例:包含单元格索引的字符串

使用for循环执行此操作的方法是

for ind=1:10
   my_cell_array{ind}=['string' num2str(ind)];
end

有没有办法使用cellfun或匿名函数句柄对它进行矢量化?

我刚刚学会了这些matlab技巧,但我仍然不擅长使用它们,任何建议都会非常感激并且有助于学习

2 个答案:

答案 0 :(得分:1)

您可以将sprintf%d一起使用。要将其分隔为单元格,请在末尾添加一个空格,然后strsplit

my_cell_array=strsplit(sprintf('string%d ',1:10))

答案 1 :(得分:1)

为了完整性,以下向量化解决方案产生前导零,在某些情况下可能是理想的:

N = 10; % length
str = 'string'; % string
my_cell_array = cellstr(strcat(str, dec2base(1:N, 10)));

由于您想知道如何使用cellfun(在这种情况下arrayfun更适合):以下产生与您的代码相同的结果,而不带前导零:

my_cell_array = arrayfun(@(x) [str num2str(x)], 1:N, 'UniformOutput', false);

但请注意,arrayfun / cellfun不是矢量化。它们与显式循环具有或多或少相同的性能。