Arrays 根据索引将内容分配给单元格数组
我想为单元格数组的每个元素分配一个内容,具体取决于单元格索引 示例:包含单元格索引的字符串 使用for循环执行此操作的一种方法是Arrays 根据索引将内容分配给单元格数组,arrays,matlab,cell,vectorization,Arrays,Matlab,Cell,Vectorization,我想为单元格数组的每个元素分配一个内容,具体取决于单元格索引 示例:包含单元格索引的字符串 使用for循环执行此操作的一种方法是 for ind=1:10 my_cell_array{ind}=['string' num2str(ind)]; end 有没有办法使用cellfun或匿名函数句柄将其矢量化 我刚刚学习了这些matlab技巧,但是我仍然不太擅长使用它们,任何建议都将非常感谢,并有助于学习您可以使用sprintf和%d来获取数字。要将其分隔为单元格,请在末尾加一个空格,然后st
for ind=1:10
my_cell_array{ind}=['string' num2str(ind)];
end
有没有办法使用cellfun或匿名函数句柄将其矢量化
我刚刚学习了这些matlab技巧,但是我仍然不太擅长使用它们,任何建议都将非常感谢,并有助于学习您可以使用
sprintf
和%d
来获取数字。要将其分隔为单元格,请在末尾加一个空格,然后strsplit
:
my_cell_array=strsplit(sprintf('string%d ',1:10))
您可以对数字使用
sprintf
和%d
。要将其分隔为单元格,请在末尾加一个空格,然后strsplit
:
my_cell_array=strsplit(sprintf('string%d ',1:10))
为完整性起见,以下矢量化解决方案会产生前导零,在某些情况下可能需要前导零:
N = 10; % length
str = 'string'; % string
my_cell_array = cellstr(strcat(str, dec2base(1:N, 10)));
由于您想知道如何使用
cellfun
(在这种情况下更合适):下面生成的结果与您的代码相同,没有前导零:
my_cell_array = arrayfun(@(x) [str num2str(x)], 1:N, 'UniformOutput', false);
但是请注意,
arrayfun
/cellfun
不是矢量化。它们的性能或多或少与显式循环相同。为了完整性起见,以下矢量化解决方案会产生前导零,在某些情况下可能需要前导零:
N = 10; % length
str = 'string'; % string
my_cell_array = cellstr(strcat(str, dec2base(1:N, 10)));
由于您想知道如何使用
cellfun
(在这种情况下更合适):下面生成的结果与您的代码相同,没有前导零:
my_cell_array = arrayfun(@(x) [str num2str(x)], 1:N, 'UniformOutput', false);
但是请注意,arrayfun
/cellfun
不是矢量化。它们的性能或多或少与显式循环相同