Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 单元阵列语法

两个问题:

1)我发现了一段代码,上面写着诸如cellArr{x}{y}{3,8} = 1.0; ,我想知道{3,8}是什么意思。该程序将连接图集合中的各个节点连接在一起。在这里,我们说“在图x的集合中,图y从3到8的连接的顶点标签为1.0”。通常,在MatLab中,语法{3,8}是什么意思?

2)这可能不是这个问题的地方,但是如果我知道我将始终具有顶点值(即小数/浮点数),那么我真的应该使用单元格数组吗?矩阵会更好,因为我知道我只会有一个数据类型吗?

谢谢 :)。



回答:
  1. 单元格数组可以具有多个维度,因此可以像其他任何多维数组一样使用多个下标进行索引 。语法{3,8}索引一个(大概)2-D单元格数组,在第三行和第八列中获取该单元格的内容。
  2. 使用单元阵列的主要原因有两个:存储不同类型的数据或存储不同大小的数据。假设在示例中x和y是标量索引,则cellArr是一个单元格数组,其中x索引的单元格包含另一个单元格数组,其y索引的单元格包含一个二维单元格数组,该数组存储您的顶点标签。

    现在,如果您的顶点标签都是相同的数据类型, 并且都是单个非空 (即,不是[] )值,则最低级别的2维单元数组可以变成2维数字数组,您的索引将如下所示:

    cellArr{x}{y}(3,8) = 1.0; %# Note the use of () instead of {} 现在的问题是如何处理由x和y索引的单元格的两个封闭集合。如果每个可以被y索引的单元格都包含大小和类型都相同的 2-D数字数组,则该单元格数组可以转换为可以按如下方式索引的3-D数字数组:

    cellArr{x}(3,8,y) = 1.0; %# Here I've chosen to use y as the third dimension 最后,如果每个可以用x索引的单元格都包含大小和类型都相同的 3-D数字数组,那么cellArr可以变成可以按如下方式索引的4-D数字数组:

    numArr(3,8,y,x) = 1.0; 您可以根据自己的喜好更改下标的顺序(即numArr的尺寸),但是我将x和y放在最后,这样就可以索引顶点标签的子numArr(:,:,y,x)例如numArr(:,:,y,x) ,它将以二维数组的形式返回。如果您对索引进行了排序,以便对诸如numArr(x,y,:,:)类的顶点标签的子numArr(x,y,:,:)索引,则它将以4维数组的形式返回结果,其中包含两个前导单例维(其中将必须使用SQUEEZE )删除。

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 02:58


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.