嵌套循环中的单元数组

时间:2011-02-15 04:59:01

标签: matlab

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行。在嵌套循环中,我生成一个数据并存储所有数据。接下来,我随机选择一个clum并存储生成的数据。但是,我可以看到生成的数据总数为12.哪个列应 1 ,2, 1 ,3, 1,* 2 < / EM> 1 *,2,3,的 1 下,如图2所示, 1 即可。因此,当我检查C(1)时,它应该显示六个数据。但是,我无法弄清楚如何做到这一点。任何帮助赞赏。

1 个答案:

答案 0 :(得分:1)

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

接下来,我不确定你要做什么,但听起来,你想让C {1} {1:6}拥有数据,但是C {1} {7:20应该是空的。有两种方法可以做到这一点。最简单的方法是将单元格初始化为单元格(0,1)并分配到C {r,end + 1},但如果您有大量数据,这将非常慢。更好的方法是坚持使用单元格(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%确定它都能正确解析,但这是主要的想法。