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)时,它应该显示六个数据。但是,我无法弄清楚如何做到这一点。任何帮助赞赏。
答案 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%确定它都能正确解析,但这是主要的想法。