【问题标题】: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))
      

      【讨论】:

        猜你喜欢
        • 2017-04-14
        • 1970-01-01
        • 1970-01-01
        • 2018-06-22
        • 2016-06-18
        • 2015-09-24
        • 2014-10-07
        • 2011-07-17
        • 2015-05-29
        相关资源
        最近更新 更多