用冒号在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单元格}
您问题中的示例有三个维度,而不是四个维度。也就是说,我不能对单元格使用向量化。我必须将单元格转换为矩阵,应用公式,然后将它们转换回单元格。您不能对单元格进行向量化操作,这是对的。当每个元素相同时,您应该使用矩阵。