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=26339)

poster 2019-12-14 20:13

嵌套循环中的单元格数组
 
clc clear all n=3; % Three column j=1; for ii=1:n C{ii}=cell(20,1) % Each column got 20 rows. end for k=1:2 for l=1:3 for m=1:2 X{j}='No strings attched'; % stored all generated data. j=j+1; % I would like to know which column I should store the data. %Randomly picking a column number r=ceil(rand(1,1)*n) % Storing in that column. ***C{r}='No strings attched';*** end end 结束

我已经生成了三列和20行。在嵌套循环中,我生成一个数据并将其全部存储。接下来,我随机挑选一个笨拙的人并存储生成的数据。然而,我可以看到产生的数据的总数是12应在,将列[B]1[/B] [B][B]2,1,3,1,*[/B] [I]2,1[/I][/B] [B][B]*,2,3,1,2,1。[/B][/B]因此,当我检查C(1)时,它应该显示六个数据。但是,我不知道该怎么做。任何帮助表示赞赏。



[B]回答:[/B]

最后,您要为C {r}分配一个字符串,该字符串是20x1的单元格。然后,您需要从20x1单元格中选择一行。例如,C {r} {1}。

接下来,我不确定您要做什么,但这听起来像是您想让C {1} {1:6}拥有数据,但是C {1} {7:20}应该空的。有两种方法可以做到这一点。最简单的方法实际上是将像元初始化为cell(0,1)并分配给C {r,end + 1},但是如果您有很多数据,这将非常慢。更好的方法是坚持进行cell(20,1)初始化。您还需要添加一个数组,该数组存储数组的实际长度(使用数组中的元素数)而不是容量(可以容纳20个元素)。或者,也可以不使用数组,而可以将其添加为C数组的第二维。你的选择。然后您的分配将利用该计数,如下所示:

%Outside Loop counts = zeros(1, n); %Inside Loop C{r}{counts(r) + 1} = blah blah counts(r) = counts(r) + 1; 如果单元数超过20,则应将单元格的容量增加一倍。最后,要查看存储在C中第一个条目中的数据,可以使用:

%After Loop C{1}{1:counts(1)} 注意:我目前无法访问Matlab,因此我不确定100%都可以正确解析,但这是主要思想。



[url=https://stackoverflow.com/questions/5000037]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 05:07

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