2017-02-22 54 views
0

的内容我已级联单元阵列如下:输出多个单元阵列

数据= {5×细胞} {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 

如何使用for循环或其他方法来输出内容如下:

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

@Tom你有一个错误,它应该是:'data = {{ 5x1 cell} {1x1 cell} {0x1 cell}}'。 'horzcat'不适用于不一致的维度单元格。 – EBH

+0

@EHB谢谢,你是对的,在这种情况下它应该是'vertcat',即'data = [{5x1 cell}; {1x1 cell}; {0x1单元}]'我的观点是用方括号''[]'来完成连接,而大括号'{}'并不真正连接,他们创建一个包含其他单元数组的新单元数组 - 这就是为什么OP得到了奇数输出。如果所有的数组都是一维的(比如在这种情况下),那么简单的连接可能是一个更简单的选择。但这可能取决于环境和个人喜好! – 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