Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在Matlab中预分配和填充单元数组_String_Matlab_Cell Array - Fatal编程技术网

String 如何在Matlab中预分配和填充单元数组

String 如何在Matlab中预分配和填充单元数组,string,matlab,cell-array,String,Matlab,Cell Array,该文件包含一个表,第一行和第一列包含两个表示名称的字符串列表。我需要得到所有的线对 这是我想要的工作空间 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}=

该文件包含一个表,第一行和第一列包含两个表示名称的字符串列表。我需要得到所有的线对

这是我想要的工作空间

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  []
  ...
我知道有可能得到这个结果,因为importdata可以做到这一点,并将字符串存储在textdata中。当你想象它们时,你会得到它们

couples =
  nameA nameB
  nameC nameD
  nameE nameF
  ...

我怎样才能得到想要的结果?我应该如何预先分配一个rcx2维度的单元数组,并将每对分配到第k行?我知道我可以通过concontation得到结果,但是它太慢了,有数千行。

您的实现几乎是正确的。第二列中有单元格的原因是,您正在使用
couples{k}
将两个对分配给第一列,如果要将
name2
中的名称分配给单元格数组的第一列,请使用
couples{k,1}
,对于单元格数组第二列的
name1
,使用
耦合{k,2}
。请尝试下面显示的代码

names1 =
  name1
  name1
  ... 

请提供更多关于name1、name2类型的信息,以及您获得的r和c值。我做了一个测试。couples{1,1}=[names(1)]它是couples={1x1 cell}而不是couples='string'
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