2017-02-22 16 views
0

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

данных = {5x1 клеток} {1x1 клеток} {0x1 клеток}

Эта команда, данные {:}, дает мне:

ans = 

    'MR619_01_XR' 
    'MR629_01_XR' 
    'MR639_01_XR' 
    'MR645_01_XR' 
    'MR659_01_XR' 


ans = 

    'MR511_01_XR' 


ans = 

    Empty cell array: 0-by-1 

Как я могу использовать для цикла или другого способа вывести содержимое следующим образом:

MR619_01_XR 
MR629_01_XR 
MR639_01_XR 
MR645_01_XR 
MR659_01_XR 
MR511_01_XR 
NULL 

Спасибо

+0

Вы создаете массив ячеек массивов ячеек. Обратите внимание, что вы также можете объединить массивы ячеек в один массив ячеек, используя 'data = [{5x1 cell} {1x1 cell} {0x1 cell}]' – Tom

+0

@ Если у вас есть ошибка, это должно быть: 'data = {{ 5x1 cell} {ячейка 1x1} {0x1 cell}} '. 'horzcat' не будет работать для ячеек несовместимых измерений. – EBH

+0

@ EHB благодарит, вы правы, в этом случае это должно быть 'vertcat', то есть' data = [{5x1 cell}; {Ячейка 1x1}; {0x1 cell}] 'Моя точка зрения заключается в том, что конкатенация выполняется с квадратными скобками, то есть' [] ', тогда как фигурные скобки' {} 'действительно не объединяются, они создают новый массив ячеек, содержащий другие массивы ячеек - вот почему ОП получал нечетный вывод. Если все массивы определенно одномерны (например, в этом случае), то простая конкатенация может быть более простой альтернативой. Но это может зависеть от контекста и личных предпочтений! – Tom

ответ

3
temp=cellfun(@isempty,data); %Finding where empty elements are 
data(temp)={'NULL'};   %Changing those indexes with 'NULL' 
req = vertcat(data{:})  %Concatenating vertically 

%For your data, it gives: 
%req = 

% 'MR619_01_XR' 
% 'MR629_01_XR' 
% 'MR639_01_XR' 
% 'MR645_01_XR' 
% 'MR659_01_XR' 
% 'MR511_01_XR' 
% 'NULL' 
+0

Отлично! Большое спасибо Sardar_Usama. Он работал, как ожидалось. – user27976