我在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];
你可以帮帮我吗?
提前致谢
答案 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