用冒号在matlab中矢量化多维单元阵列

用冒号在matlab中矢量化多维单元阵列,matlab,math,Matlab,Math,如果我有一个单元格数组: example=cell(dim1,dim2,dim3); 我希望访问以下形状的值: example1{:}{:}{1} = rand(20,1); 我怎样才能做到?重要的是要知道,我希望保留此类单元格数组的形状,即修改值,但具有相同类型的多维单元格数组。我想现在我理解了您的问题 mymatrix(:,:,:,1)=num2cell(rand(size(mymatrix(:,:,:,1)))); 使用()索引的最简单方法是返回一个单元格,而不是单个元素的逗号分隔列

如果我有一个单元格数组:

example=cell(dim1,dim2,dim3);
我希望访问以下形状的值:

example1{:}{:}{1} = rand(20,1);

我怎样才能做到?重要的是要知道,我希望保留此类单元格数组的形状,即修改值,但具有相同类型的多维单元格数组。

我想现在我理解了您的问题

mymatrix(:,:,:,1)=num2cell(rand(size(mymatrix(:,:,:,1))));

使用
()
索引的最简单方法是返回一个单元格,而不是单个元素的逗号分隔列表。在右侧,使用具有相同索引表达式的
rand(size(x))
确保生成的元素数量正确。左侧是一个单元格,因此您必须将右侧也转换为单元格。

为什么不能使用
example1{:,:,1}
哪种方法是索引3d单元格的正确方法?我尝试使用example1{:,:,1},它只返回:ans={1x3 cell}{1x3 cell}{1x3 cell}{1x3 cell}{1x3 cell}{1x3 cell}{1x3 cell}{ans={1x3 cell}{1x3 cell}{1x3 cell}{1x3 cell}{1x3 cell}{1x3 cell}…我甚至可以尝试示例1{,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,,:,1}并返回相同的内容。请记住,我为该单元格使用的维度是一个示例1{10}{6}{3}。您的问题中的描述有点错误。从'cell(dim1,dim2,dim3)开始59440如果我这样做:
mymatrix{,:,:,:,:,:,:,:,:,:,:,:,:,:,:,,,,,,}
我会收到相同的输出,即10次…
ans={1x3单元格}{1x3单元格}{1x3单元格}{1x3单元格}{1x3单元格}{1x3单元格}{1x3单元格}
您问题中的示例有三个维度,而不是四个维度。也就是说,我不能对单元格使用向量化。我必须将单元格转换为矩阵,应用公式,然后将它们转换回单元格。您不能对单元格进行向量化操作,这是对的。当每个元素相同时,您应该使用矩阵。