dataset=importdata(filename);
[r,c]=size(dataset.data);
names2=dataset.textdata(2:r+1, 1);
names1=dataset.textdata(1, 2:c+1);
rc=r*c;
couples=cell(rc, 2);
k=1
for i=1:r
for j=1:c
couples{k}=[names2(i), names1(j)];
k=k+1;
end
end
该文件包含一个表,第一行和第一列包含两个表示名称的字符串列表。我需要得到所有的弦乐队。
这是我想要的工作空间
names1 1xc cell
names2 1xr cell
couples rcx2 cell
但是当我想象我得到的夫妻时
couples =
1x2 cell []
1x2 cell []
1x2 cell []
...
应该是
couples =
nameA nameB
nameC nameD
nameE nameF
...
我知道可以获得此结果,因为importdata可以这样做并将字符串存储在textdata中。当你想象它们时,你得到了
names1 =
name1
name1
...
我怎样才能得到理想的结果?我应该如何预先分配rcx2维度的单元格数组并将每对分配给第k行?我知道我可以通过concanation得到结果,但是它太慢了,有数千行。
答案 0 :(得分:1)
您的实施几乎是正确的。您在第二列中包含单元格的原因是,如果要将couples{k}
中的名称分配给单元格的第一列,则使用name2
将两个对分配给第一列数组使用couples{k,1}
,name1
到单元格数组的第二列使用couples{k,2}
。尝试代码如下所示。
dataset=importdata(filename);
[r,c]=size(dataset.data);
names2=dataset.textdata(2:r+1, 1);
names1=dataset.textdata(1, 2:c+1);
rc=r*c;
couples=cell(rc, 2);
k=1
for i=1:r
for j=1:c
couples{k,1}=[names2(i)];
couples{k,2}=[names1(j)];
k=k+1;
end
end