Как предварительно выделить и заполнить массив ячеек в Matlab

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 может сделать это и сохранить строки в текстовых данных. Когда вы визуализируете их, вы получаете

names1 =
  name1
  name1
  ... 

как я могу получить желаемый результат? Как мне предварительно выделить массив ячеек размером rcx2 и назначить каждую пару k-й строке? Я знаю, что могу получить результаты путем объединения, но это слишком медленно с тысячами строк.


person user3290180    schedule 14.04.2014    source источник
comment
Пожалуйста, дайте больше информации о типах имен1, имен2 и значениях, которые вы получаете для r и c.   -  person Lazarus    schedule 14.04.2014


Ответы (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
person RDizzl3    schedule 14.04.2014
comment
Я сделал тест. пары{1,1}=[имена(1)] Это пары = {ячейка 1x1}, а не пары='строка' - person user3290180; 18.04.2014