【问题标题】:Assign content to cell array depending on index根据索引将内容分配给元胞数组
【发布时间】:2017-10-31 09:02:15
【问题描述】:
我想为单元格数组的每个元素分配一个取决于单元格索引的内容。
示例:包含单元格索引的字符串
一种使用 for 循环的方法是
for ind=1:10
my_cell_array{ind}=['string' num2str(ind)];
end
有没有办法使用 cellfun 或匿名函数句柄对其进行矢量化?
我刚刚学习了这些 matlab 技巧,但是我仍然不太擅长使用它们,任何建议都将非常感激并有助于学习
【问题讨论】:
标签:
arrays
matlab
cell
vectorization
【解决方案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 不是矢量化。它们的性能或多或少与显式循环相同。
【解决方案2】:
您可以使用sprintf 和%d 作为数字。要将其分隔为单元格,请在末尾添加一个空格,然后 strsplit:
my_cell_array=strsplit(sprintf('string%d ',1:10))