MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   单元阵列语法 (https://www.labfans.com/bbs/showthread.php?t=26424)

poster 2019-12-14 20:13

单元阵列语法
 
两个问题:

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

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

谢谢 :)。



[B]回答:[/B]
[LIST=1][*] [URL="http://www.mathworks.com/help/techdoc/matlab_prog/br04bw6-98.html"]单元格数组[/URL]可以具有多个维度,因此可以像其他任何[URL="http://www.mathworks.com/help/techdoc/math/f1-86528.html"]多维数组[/URL]一样使用多个下标进行[URL="http://www.mathworks.com/help/techdoc/matlab_prog/br04bw6-98.html#br04bw6-108"]索引[/URL] 。语法{3,8}索引一个(大概)2-D单元格数组,在第三行和第八列中获取该单元格的内容。
[*]使用单元阵列的主要原因有两个:存储不同[I]类型的[/I]数据或存储不同[I]大小的[/I]数据。假设在示例中x和y是标量索引,则cellArr是一个单元格数组,其中x索引的单元格包含另一个单元格数组,其y索引的单元格包含一个二维单元格数组,该数组存储您的顶点标签。

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

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

cellArr{x}(3,8,y) = 1.0; %# Here I've chosen to use y as the third dimension 最后,如果每个可以用x索引的单元格都包含[I]大小和类型都相同的[/I] 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维数组的形式返回结果,其中包含两个前导单例维(其中将必须使用[URL="http://www.mathworks.com/help/techdoc/ref/squeeze.html"]SQUEEZE[/URL] )删除。
[/LIST]
[url=https://stackoverflow.com/questions/5108581]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 03:00

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