#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'});
Это кажется грубым методом, но он работает. Любые дальнейшие улучшения приветствуются.