在Matlab中具有多列到矩阵的单元格

时间:2016-09-09 16:23:46

标签: matlab cell

我在Matlab中有一个单元格,如下所示,每个条目可以有多个整数。 例如:

 A=cell(2,10);
 A{1,1}=[5];
 A{1,2}=[5 7];
 A{1,3}=[5];
 A{1,4}=[5];
 A{1,5}=[5];
 A{1,6}=[5];
 A{1,7}=[5];
 A{1,8}=[5];
 A{1,9}=[5];
 A{1,10}=[5];

 A{2,1}=[5];
 A{2,2}=[3];
 A{2,3}=[1];
 A{2,4}=[5];
 A{2,5}=[2];
 A{2,6}=[6];
 A{2,7}=[2];
 A{2,8}=[2];
 A{2,9}=[1];
 A{2,10}=[5 4];

我将获得一个包含单元格元素的Matrix。当单元格中的行包含多个条目(例如A {1,2})时,应该包含一个条目(所有条目)。例如,Matrix输出应为:

  B=[5 5 5 5 5 5 5 5 5 5; %A{1,:}first column in the cell
  5 7 5 5 5 5 5 5 5 5; %A{1,:}first column and the second element in row       
                       A{1,2}
  5 3 1 5 2 6 2 2 1 5;
  5 3 1 5 2 6 2 2 1 4];
你可以帮帮我吗? 提前致谢

1 个答案:

答案 0 :(得分:1)

这样做:

[r,c]= size(A);   %Finding the size of A for the next step
B=zeros(r*2,c);   %Pre-allocating the memory
for iter=1:r
    k=find(cellfun('length',A(iter,:))==2); %finding which elements have length =2
    temp=cell2mat(A(iter,:));   %converting cell to matrix
    k1= k+ [0:size(k,2)-1];     %finding which elements should come in the next row instead of in next column

    temp1= temp(k1+1);          %storing those elements in 'temp1' matrix
    temp(k1+1)=[];              %removing those elements from original 'temp' matrix

    B(2*(iter-1)+1:2*(iter-1)+2, :)=[temp; temp];  
    B(2+(iter-1)*2,k)=temp1;    %replacing the elements from temp1
end
B