Matlab расширения массива ячеек

#arrays #matlab

#массивы #matlab

Вопрос:

У меня есть массив ячеек, который выглядит следующим образом :

                         double              strings               strings
{ 1 x 3,cell} = { {1000000 x 1, double} {1000000 x 1, cell} {1000000 x 1, cell} }
  

И я хочу преобразовать это в набор данных с помощью cell2dataset() . Итак, мне нужно развернуть все массивы ячеек и поместить их в одну ячейку, чтобы я мог использовать cell2dataset() .

Но, похоже, я не могу расширить это { 1 x 3 } в { 1000000 x 3 } массив ячеек.

Есть идеи относительно того, как это сделать?

Комментарии:

1. horzcat(input_cell_array{:}) ?

2. Error using horzcat Dimensions of matrices being concatenated are not consistent.

3. Я думаю, это потому, что некоторые из них представляют собой двойные массивы, а некоторые — массивы строк.

4. Может быть, там есть несколько пустых ячеек?

5. @Nishanth Можете ли вы предоставить, скажем, пример из пяти строк ваших данных (постарайтесь сделать его как можно более репрезентативным)?

Ответ №1:

попробуйте это: задан 'a' размер вашего входного массива ячеек {1 X 3}

 b=cell(size(a{1,1},1),size(a,2));
b(:,1)=num2cell(a{1,1});
b(:,2)=a{1,2};
b(:,3)=a{1,3};
ds=cell2dataset(b,'VarNames',{'Observation','attribute_1','attribute_2'});
  

Это кажется грубым методом, но он работает. Любые дальнейшие улучшения приветствуются.