2017-02-21 5 views
0

У меня есть ячейка 1X100, которая содержит эксклюзивные ячейки 1X24. Мне нужно извлечь эти 100 ячеек и объединить их вместе, чтобы сформировать ячейку 100X24, как это можно сделать?Преобразование ячеек в ячейки в отдельные ячейки

Я играл с функцией «cellfun», а также использовал для циклов, чтобы попробовать выполнить необходимые операции, но безуспешно. Я понимаю, что я мог бы просто присоединиться к этим ячейкам один за другим, но предпочел бы более эффективный подход. Любая помощь будет оценена по достоинству.

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

for i = 1:100 
    band{i} = prctile(e-data,i); 
end 

, где e_data является 62X24 двойного

+1

Я бы сказал: не генерируйте данные как ячейку! вы можете просто сделать то же самое, выполнив 'band (i) = ...' или 'band (i,:) = ...' –

+1

@ Комментарий AnderBiguri, конечно, правильный ответ. Однако иногда это невозможно (например, вывод из 'regexp' с флагом' tokens'). В этом случае [этот ответ] (http://stackoverflow.com/questions/31588250/nested-cells-matlab?rq=1) должен помочь. – craigim

+0

Спасибо, я так долго смотрел, что стал слепой. –

ответ

3

Второго вход в prctile может быть array of percentages так что ваш код может быть заменен

band = prctile(e - data, 1:100).'; 

Это создаст числовой массив размером 100 x 24, который будет более результативным, чем массив ячеек.

В общем, хотя, если вам нужно объединить содержимое нескольких ячеек вместе, вы можете использовать {:} индексацию для получения comma separated list, который затем может быть передан в cat

result = cat(1, band{:}); 
0

Если я правильно понял вашу цель, вам необходимо использовать iscell() и получить то, что вы хотите впоследствии:

R=cellfun(@iscell, YourCell); 
Demanded_Cell=YourCell(R); 
Смежные вопросы