Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/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
Arrays 根据索引将内容分配给单元格数组_Arrays_Matlab_Cell_Vectorization - Fatal编程技术网

Arrays 根据索引将内容分配给单元格数组

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循环执行此操作的一种方法是

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
不是矢量化。它们的性能或多或少与显式循环相同