2016-09-09 4 views
2

Matlabのセルは次のように構成されています。ここで各エントリは複数の整数を持つことができます。例えば :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]; 

私は細胞の要素が含まれているマトリックスを得るでしょう。セルの行に複数のエントリ(たとえばA {1,2})が含まれている場合、そのエントリは(すべての)エントリに1回含める必要があります。たとえば、マトリックス出力は次のようになります。

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

で おかげでこれはそれを行うだろう。

[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 
+0

どうもありがとう、私は問題を持っています。セルの各行内の要素の数には、3つ以上の要素が含まれる場合があります。実際に私のコードにあなたの素晴らしいコードを含めて、私はこのメッセージのエラーを受け取ります: "添え字付きのディメンションの不一致"。 私を助けることができますか? – Noris

+0

@ノリスあなたの実際の問題に応じて修正することはできませんか?また、2つ以上の要素の場合に期待される出力がどこにもないとあなたは言及していませんでした。私はあなたが提供する情報に基づいてのみ答えることができます! –

関連する問題